-
Notifications
You must be signed in to change notification settings - Fork 3
Application Bar tests with some framework enhancements on page factorya #1904
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Application Bar tests with some framework enhancements on page factorya #1904
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request implements comprehensive test coverage for the Application List Action Bar and refactors existing tests to use the Page Object Model (POM) pattern. The changes introduce a new ApplicationActionBarPage with extensive methods for interacting with search filters, action buttons, and modals, while also improving code organization and test isolation across multiple test files.
Changes:
- Created ApplicationActionBarPage with 1087 lines of reusable methods for testing action bar components
- Refactored 6 existing test files to use Page Object Model pattern
- Updated ApplicationDetailsPage selectors for contact information fields
- Added refreshPage() method to BasePage for test isolation
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 19 comments.
Show a summary per file
| File | Description |
|---|---|
| ApplicationActionBarPage.ts | New page object implementing comprehensive methods for action bar interactions, search, filters, modals, and column management |
| PageFactory.ts | Added factory methods and imports for ApplicationActionBarPage and EmailsPage |
| utilities/index.ts | Exported new page objects for convenient access |
| BasePage.ts | Added refreshPage() method for page reload functionality |
| ApplicationDetailsPage.ts | Updated contact field selectors from ApplicantSummary_* to ContactInfo_* pattern |
| ListPages.ts | Added search and filter selector definitions and verification methods |
| applicationActionBar.cy.ts | New comprehensive test suite with 278 lines validating action bar functionality |
| navigation.cy.ts | Refactored to use PageFactory pattern |
| login.cy.ts | Refactored to use PageFactory pattern |
| lists.cy.ts | Refactored to use PageFactory pattern |
| chefsdata.cy.ts | Refactored to use PageFactory and fixture-based expected data |
| basicEmail.cy.ts | Refactored to use EmailsPage object (not included in PR) |
| applications.cy.ts | New test file for application selection validation |
Comments suppressed due to low confidence (4)
applications/Unity.AutoUI/cypress/utilities/index.ts:1
- This import path is incorrect. ApplicationActionBarPageInstance is exported from PageFactory, not from ApplicationActionBarPage. Change to: export { ApplicationActionBarPageInstance } from './PageFactory';
/**
applications/Unity.AutoUI/cypress/e2e/chefsdata.cy.ts:1
- These selectors don't match the selectors defined in ApplicationDetailsPage which uses '#ApplicantSummary_PhysicalAddressStreet' pattern. This inconsistency will cause tests to fail. Use the selectors from the page object instead of hardcoding them in the test.
/// <reference types="cypress" />
applications/Unity.AutoUI/cypress/e2e/chefsdata.cy.ts:1
- These selectors don't match the ApplicationDetailsPage definitions which use '#ApplicantInfo_MailingAddressStreet' pattern. Use the page object's selector properties instead of hardcoding selectors in tests.
/// <reference types="cypress" />
applications/Unity.AutoUI/cypress/e2e/chefsdata.cy.ts:1
- This selector pattern doesn't match the ApplicationDetailsPage definition which uses '#ApplicantInfo_SigningAuthorityFullName'. Hardcoded selectors in tests defeat the purpose of the page object pattern and will cause test failures.
/// <reference types="cypress" />
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| import { NavigationPage } from "../pages/NavigationPage"; | ||
| import { DashboardPage } from "../pages/DashboardPage"; | ||
| import { ApplicationDetailsPage } from "../pages/ApplicationDetailsPage"; | ||
| import { EmailsPage } from "../pages/EmailsPage"; |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The EmailsPage is imported but the corresponding class file does not exist in the pages directory. This will cause a compilation error. Either create the missing EmailsPage.ts file or remove this import and related references.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Build breaker: cypress/utilities/PageFactory.ts imports ../pages/EmailsPage and exposes getEmailsPage(), but cypress/pages/EmailsPage.ts is missing from the branch. Cypress fails at webpack compile stage, blocking 7 specs. Please add/restore the page object or remove the wiring if not needed.
| static getEmailsPage(): EmailsPage { | ||
| return this.getInstance("EmailsPage", () => new EmailsPage()); | ||
| } |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This method references EmailsPage which doesn't exist in the codebase. This will cause runtime errors when tests try to use emailsPage methods. Remove this method or create the missing EmailsPage class.
| export const IntakesPageInstance = () => PageFactory.getIntakesPage(); | ||
| export const FormsPageInstance = () => PageFactory.getFormsPage(); | ||
| export const PaymentsPageInstance = () => PageFactory.getPaymentsPage(); | ||
| export const EmailsPageInstance = () => PageFactory.getEmailsPage(); |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This export references the non-existent EmailsPage. Remove this export or implement the missing EmailsPage class.
| export const EmailsPageInstance = () => PageFactory.getEmailsPage(); |
| } | ||
| before(() => { | ||
| // Load expected data from fixture based on environment | ||
| cy.fixture("chefsExpectedData.json").then((data) => { |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The fixture file 'chefsExpectedData.json' does not exist in the fixtures directory. Only chefs.json, metabase.json, and submissions.json exist. Either create this fixture file or use an existing one.
| cy.fixture("chefsExpectedData.json").then((data) => { | |
| cy.fixture("chefs.json").then((data) => { |
| cy.wait(500); // Wait for search results to update | ||
| cy.get(this.selectors.tableRow) | ||
| .first() |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using hard-coded wait times (cy.wait with milliseconds) is an anti-pattern in Cypress. Replace with proper assertions or wait for specific conditions using cy.intercept aliases or element state checks. This applies to multiple occurrences throughout this file.
| cy.wait(500); // Wait for search results to update | |
| cy.get(this.selectors.tableRow) | |
| .first() | |
| // Wait for the first row to reflect the searched application ID instead of using a fixed delay | |
| cy.get(this.selectors.tableRow) | |
| .first() | |
| .should("contain", applicationId) |
| const applicationsPage = ApplicationsPageInstance(); | ||
| const rolesPage = RolesPageInstance(); | ||
| const usersPage = UsersPageInstance(); | ||
| const intakesPage = IntakesPageInstance(); |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused variable intakesPage.
| const rolesPage = RolesPageInstance(); | ||
| const usersPage = UsersPageInstance(); | ||
| const intakesPage = IntakesPageInstance(); | ||
| const formsPage = FormsPageInstance(); |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused variable formsPage.
| describe("Send an email", () => { | ||
| const loginPage = PageFactory.getLoginPage(); | ||
| const navigationPage = PageFactory.getNavigationPage(); | ||
| const applicationsPage = PageFactory.getApplicationsPage(); |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused variable applicationsPage.
| const applicationsPage = PageFactory.getApplicationsPage(); |
| LoginPageInstance, | ||
| ApplicationsPageInstance, | ||
| ApplicationActionBarPageInstance, | ||
| BasePage, |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused import BasePage.
| BasePage, |
| } from "../utilities"; | ||
|
|
||
| const loginPage = LoginPageInstance(); | ||
| const applicationsPage = ApplicationsPageInstance(); |
Copilot
AI
Jan 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused variable applicationsPage.
| const applicationsPage = ApplicationsPageInstance(); |
|
Problem - When I attempt to launch this directly via "npx cypress run" or using the batch file, it fails. ==================================================================================================== (Run Starting) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ ──────────────────────────────────────────────────────────────────────────────────────────────────── Running: applicationActionBar.cy.ts (1 of 9) Oops...we found an error preparing this test file:
The error was: Error: Webpack Compilation Error This occurred while Cypress was compiling and bundling your test code. This is usually caused by:
Fix the error in your code and re-run your tests. (Results) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ (Video)
──────────────────────────────────────────────────────────────────────────────────────────────────── Running: applications.cy.ts (2 of 9) Oops...we found an error preparing this test file:
The error was: Error: Webpack Compilation Error This occurred while Cypress was compiling and bundling your test code. This is usually caused by:
Fix the error in your code and re-run your tests. (Results) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ (Video)
──────────────────────────────────────────────────────────────────────────────────────────────────── Running: basicEmail.cy.ts (3 of 9) Oops...we found an error preparing this test file:
The error was: Error: Webpack Compilation Error This occurred while Cypress was compiling and bundling your test code. This is usually caused by:
Fix the error in your code and re-run your tests. (Results) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ (Video)
──────────────────────────────────────────────────────────────────────────────────────────────────── Running: chefsdata.cy.ts (4 of 9) Oops...we found an error preparing this test file:
The error was: Error: Webpack Compilation Error This occurred while Cypress was compiling and bundling your test code. This is usually caused by:
Fix the error in your code and re-run your tests. (Results) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ (Video)
──────────────────────────────────────────────────────────────────────────────────────────────────── Running: lists.cy.ts (5 of 9) Oops...we found an error preparing this test file:
The error was: Error: Webpack Compilation Error This occurred while Cypress was compiling and bundling your test code. This is usually caused by:
Fix the error in your code and re-run your tests. (Results) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ (Video)
──────────────────────────────────────────────────────────────────────────────────────────────────── Running: login.cy.ts (6 of 9) Oops...we found an error preparing this test file:
The error was: Error: Webpack Compilation Error This occurred while Cypress was compiling and bundling your test code. This is usually caused by:
Fix the error in your code and re-run your tests. (Results) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ (Video)
──────────────────────────────────────────────────────────────────────────────────────────────────── Running: navigation.cy.ts (7 of 9) Oops...we found an error preparing this test file:
The error was: Error: Webpack Compilation Error This occurred while Cypress was compiling and bundling your test code. This is usually caused by:
Fix the error in your code and re-run your tests. (Results) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ (Video)
──────────────────────────────────────────────────────────────────────────────────────────────────── Running: library/chefs.cy.ts (8 of 9) Chefs Login and Logout 1 passing (24s) (Results) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ (Video)
──────────────────────────────────────────────────────────────────────────────────────────────────── Running: library/metabase.cy.ts (9 of 9) Metabase Login and Logout 1 passing (6s) (Results) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ (Video)
==================================================================================================== (Run Finished) ┌────────────────────────────────────────────────────────────────────────────────────────────────┐ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 14 out of 14 changed files in this pull request and generated 12 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| cy.get(this.selectors.rowCheckbox).uncheck({ force: true }); | ||
| }); | ||
| } | ||
|
|
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing JSDoc comment for the public method selectSearchedApplicationById. All other public methods in this file have JSDoc comments explaining their purpose.
| /** | |
| * Search for an application by ID and select the first matching result. | |
| * | |
| * @param applicationId - The unique identifier of the application to search for. | |
| * @returns void | |
| */ |
| it("Should verify action buttons state", () => { | ||
| actionBarPage.verifyActionButtonsHidden(); | ||
| actionBarPage.verifyFilterButtonVisible(); | ||
| actionBarPage.verifyActionButtonsHidden(); |
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The method verifyActionButtonsHidden() is called twice consecutively on lines 126 and 128. This appears to be duplicated code with no changes in between.
| actionBarPage.verifyActionButtonsHidden(); |
| // ==================== TESTS WITH APPLICATION SELECTION ==================== | ||
| describe("Tests With Application Selection", () => { |
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The describe block 'Tests With Application Selection' is nested inside 'Tests Without Application Selection' (which starts at line 58). This nesting appears incorrect based on the comment and semantic meaning - these should be sibling describe blocks at the same level, not nested.
| }); | ||
| }); | ||
| }); | ||
| describe("Column Visibility Management", () => { |
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The describe block 'Column Visibility Management' is nested inside 'Tests Without Application Selection' but appears after the nested 'Tests With Application Selection' block. This should likely be at the same level as the other top-level test groups for better organization.
| it("Should verify action bar container structure", () => { | ||
| actionBarPage.verifyActionBarStructure(); |
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This standalone test case is nested inside 'Tests Without Application Selection' but appears after nested describe blocks. For better organization, this should either be in its own describe block or moved to be with other related tests.
| it("Should verify action bar container structure", () => { | |
| actionBarPage.verifyActionBarStructure(); | |
| describe("Action Bar Structure", () => { | |
| it("Should verify action bar container structure", () => { | |
| actionBarPage.verifyActionBarStructure(); | |
| }); |
| "#PhysicalAddress_Street", | ||
| expectedData.applicantInfo.physicalAddressStreet, | ||
| ], | ||
| [ | ||
| "#PhysicalAddress_Street2", | ||
| expectedData.applicantInfo.physicalAddressStreet2, | ||
| ], | ||
| [ | ||
| "#PhysicalAddress_Unit", | ||
| expectedData.applicantInfo.physicalAddressUnit, | ||
| ], | ||
| [ | ||
| "#PhysicalAddress_City", | ||
| expectedData.applicantInfo.physicalAddressCity, | ||
| ], | ||
| [ | ||
| "#PhysicalAddress_Province", | ||
| expectedData.applicantInfo.physicalAddressProvince, | ||
| ], | ||
| [ | ||
| "#PhysicalAddress_PostalCode", | ||
| expectedData.applicantInfo.physicalAddressPostalCode, | ||
| ], | ||
| [ | ||
| "#MailingAddress_Street", | ||
| expectedData.applicantInfo.mailingAddressStreet, | ||
| ], | ||
| [ | ||
| "#MailingAddress_Street2", | ||
| expectedData.applicantInfo.mailingAddressStreet2, | ||
| ], | ||
| [ | ||
| "#MailingAddress_Unit", | ||
| expectedData.applicantInfo.mailingAddressUnit, | ||
| ], | ||
| [ | ||
| "#MailingAddress_City", | ||
| expectedData.applicantInfo.mailingAddressCity, | ||
| ], | ||
| [ | ||
| "#MailingAddress_Province", | ||
| expectedData.applicantInfo.mailingAddressProvince, | ||
| ], | ||
| [ | ||
| "#MailingAddress_PostalCode", | ||
| expectedData.applicantInfo.mailingAddressPostalCode, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityFullName", | ||
| expectedData.applicantInfo.signingAuthorityFullName, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityTitle", | ||
| expectedData.applicantInfo.signingAuthorityTitle, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityEmail", | ||
| expectedData.applicantInfo.signingAuthorityEmail, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityBusinessPhone", | ||
| expectedData.applicantInfo.signingAuthorityBusinessPhone, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityCellPhone", |
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Selector mismatch between test and page object. The test uses selectors like #PhysicalAddress_Street, #MailingAddress_Street, and #SigningAuthority_SigningAuthorityFullName, but ApplicationDetailsPage defines these as #ApplicantSummary_PhysicalAddressStreet, #ApplicantInfo_MailingAddressStreet, and #ApplicantInfo_SigningAuthorityFullName. These tests will likely fail or not find the expected elements.
| "#PhysicalAddress_Street", | |
| expectedData.applicantInfo.physicalAddressStreet, | |
| ], | |
| [ | |
| "#PhysicalAddress_Street2", | |
| expectedData.applicantInfo.physicalAddressStreet2, | |
| ], | |
| [ | |
| "#PhysicalAddress_Unit", | |
| expectedData.applicantInfo.physicalAddressUnit, | |
| ], | |
| [ | |
| "#PhysicalAddress_City", | |
| expectedData.applicantInfo.physicalAddressCity, | |
| ], | |
| [ | |
| "#PhysicalAddress_Province", | |
| expectedData.applicantInfo.physicalAddressProvince, | |
| ], | |
| [ | |
| "#PhysicalAddress_PostalCode", | |
| expectedData.applicantInfo.physicalAddressPostalCode, | |
| ], | |
| [ | |
| "#MailingAddress_Street", | |
| expectedData.applicantInfo.mailingAddressStreet, | |
| ], | |
| [ | |
| "#MailingAddress_Street2", | |
| expectedData.applicantInfo.mailingAddressStreet2, | |
| ], | |
| [ | |
| "#MailingAddress_Unit", | |
| expectedData.applicantInfo.mailingAddressUnit, | |
| ], | |
| [ | |
| "#MailingAddress_City", | |
| expectedData.applicantInfo.mailingAddressCity, | |
| ], | |
| [ | |
| "#MailingAddress_Province", | |
| expectedData.applicantInfo.mailingAddressProvince, | |
| ], | |
| [ | |
| "#MailingAddress_PostalCode", | |
| expectedData.applicantInfo.mailingAddressPostalCode, | |
| ], | |
| [ | |
| "#SigningAuthority_SigningAuthorityFullName", | |
| expectedData.applicantInfo.signingAuthorityFullName, | |
| ], | |
| [ | |
| "#SigningAuthority_SigningAuthorityTitle", | |
| expectedData.applicantInfo.signingAuthorityTitle, | |
| ], | |
| [ | |
| "#SigningAuthority_SigningAuthorityEmail", | |
| expectedData.applicantInfo.signingAuthorityEmail, | |
| ], | |
| [ | |
| "#SigningAuthority_SigningAuthorityBusinessPhone", | |
| expectedData.applicantInfo.signingAuthorityBusinessPhone, | |
| ], | |
| [ | |
| "#SigningAuthority_SigningAuthorityCellPhone", | |
| "#ApplicantSummary_PhysicalAddressStreet", | |
| expectedData.applicantInfo.physicalAddressStreet, | |
| ], | |
| [ | |
| "#ApplicantSummary_PhysicalAddressStreet2", | |
| expectedData.applicantInfo.physicalAddressStreet2, | |
| ], | |
| [ | |
| "#ApplicantSummary_PhysicalAddressUnit", | |
| expectedData.applicantInfo.physicalAddressUnit, | |
| ], | |
| [ | |
| "#ApplicantSummary_PhysicalAddressCity", | |
| expectedData.applicantInfo.physicalAddressCity, | |
| ], | |
| [ | |
| "#ApplicantSummary_PhysicalAddressProvince", | |
| expectedData.applicantInfo.physicalAddressProvince, | |
| ], | |
| [ | |
| "#ApplicantSummary_PhysicalAddressPostalCode", | |
| expectedData.applicantInfo.physicalAddressPostalCode, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressStreet", | |
| expectedData.applicantInfo.mailingAddressStreet, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressStreet2", | |
| expectedData.applicantInfo.mailingAddressStreet2, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressUnit", | |
| expectedData.applicantInfo.mailingAddressUnit, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressCity", | |
| expectedData.applicantInfo.mailingAddressCity, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressProvince", | |
| expectedData.applicantInfo.mailingAddressProvince, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressPostalCode", | |
| expectedData.applicantInfo.mailingAddressPostalCode, | |
| ], | |
| [ | |
| "#ApplicantInfo_SigningAuthorityFullName", | |
| expectedData.applicantInfo.signingAuthorityFullName, | |
| ], | |
| [ | |
| "#ApplicantInfo_SigningAuthorityTitle", | |
| expectedData.applicantInfo.signingAuthorityTitle, | |
| ], | |
| [ | |
| "#ApplicantInfo_SigningAuthorityEmail", | |
| expectedData.applicantInfo.signingAuthorityEmail, | |
| ], | |
| [ | |
| "#ApplicantInfo_SigningAuthorityBusinessPhone", | |
| expectedData.applicantInfo.signingAuthorityBusinessPhone, | |
| ], | |
| [ | |
| "#ApplicantInfo_SigningAuthorityCellPhone", |
| "#PhysicalAddress_Street", | ||
| expectedData.applicantInfo.physicalAddressStreet, | ||
| ], | ||
| [ | ||
| "#PhysicalAddress_Street2", | ||
| expectedData.applicantInfo.physicalAddressStreet2, | ||
| ], | ||
| [ | ||
| "#PhysicalAddress_Unit", | ||
| expectedData.applicantInfo.physicalAddressUnit, | ||
| ], | ||
| [ | ||
| "#PhysicalAddress_City", | ||
| expectedData.applicantInfo.physicalAddressCity, | ||
| ], | ||
| [ | ||
| "#PhysicalAddress_Province", | ||
| expectedData.applicantInfo.physicalAddressProvince, | ||
| ], | ||
| [ | ||
| "#PhysicalAddress_PostalCode", | ||
| expectedData.applicantInfo.physicalAddressPostalCode, | ||
| ], | ||
| [ | ||
| "#MailingAddress_Street", | ||
| expectedData.applicantInfo.mailingAddressStreet, | ||
| ], | ||
| [ | ||
| "#MailingAddress_Street2", | ||
| expectedData.applicantInfo.mailingAddressStreet2, | ||
| ], | ||
| [ | ||
| "#MailingAddress_Unit", | ||
| expectedData.applicantInfo.mailingAddressUnit, | ||
| ], | ||
| [ | ||
| "#MailingAddress_City", | ||
| expectedData.applicantInfo.mailingAddressCity, | ||
| ], | ||
| [ | ||
| "#MailingAddress_Province", | ||
| expectedData.applicantInfo.mailingAddressProvince, | ||
| ], | ||
| [ | ||
| "#MailingAddress_PostalCode", | ||
| expectedData.applicantInfo.mailingAddressPostalCode, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityFullName", | ||
| expectedData.applicantInfo.signingAuthorityFullName, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityTitle", | ||
| expectedData.applicantInfo.signingAuthorityTitle, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityEmail", | ||
| expectedData.applicantInfo.signingAuthorityEmail, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityBusinessPhone", | ||
| expectedData.applicantInfo.signingAuthorityBusinessPhone, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityCellPhone", |
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Selector mismatch between test and page object. The test uses selectors like #PhysicalAddress_Street, #MailingAddress_Street, and #SigningAuthority_SigningAuthorityFullName, but ApplicationDetailsPage defines these as #ApplicantSummary_PhysicalAddressStreet, #ApplicantInfo_MailingAddressStreet, and #ApplicantInfo_SigningAuthorityFullName. These tests will likely fail or not find the expected elements.
| "#PhysicalAddress_Street", | |
| expectedData.applicantInfo.physicalAddressStreet, | |
| ], | |
| [ | |
| "#PhysicalAddress_Street2", | |
| expectedData.applicantInfo.physicalAddressStreet2, | |
| ], | |
| [ | |
| "#PhysicalAddress_Unit", | |
| expectedData.applicantInfo.physicalAddressUnit, | |
| ], | |
| [ | |
| "#PhysicalAddress_City", | |
| expectedData.applicantInfo.physicalAddressCity, | |
| ], | |
| [ | |
| "#PhysicalAddress_Province", | |
| expectedData.applicantInfo.physicalAddressProvince, | |
| ], | |
| [ | |
| "#PhysicalAddress_PostalCode", | |
| expectedData.applicantInfo.physicalAddressPostalCode, | |
| ], | |
| [ | |
| "#MailingAddress_Street", | |
| expectedData.applicantInfo.mailingAddressStreet, | |
| ], | |
| [ | |
| "#MailingAddress_Street2", | |
| expectedData.applicantInfo.mailingAddressStreet2, | |
| ], | |
| [ | |
| "#MailingAddress_Unit", | |
| expectedData.applicantInfo.mailingAddressUnit, | |
| ], | |
| [ | |
| "#MailingAddress_City", | |
| expectedData.applicantInfo.mailingAddressCity, | |
| ], | |
| [ | |
| "#MailingAddress_Province", | |
| expectedData.applicantInfo.mailingAddressProvince, | |
| ], | |
| [ | |
| "#MailingAddress_PostalCode", | |
| expectedData.applicantInfo.mailingAddressPostalCode, | |
| ], | |
| [ | |
| "#SigningAuthority_SigningAuthorityFullName", | |
| expectedData.applicantInfo.signingAuthorityFullName, | |
| ], | |
| [ | |
| "#SigningAuthority_SigningAuthorityTitle", | |
| expectedData.applicantInfo.signingAuthorityTitle, | |
| ], | |
| [ | |
| "#SigningAuthority_SigningAuthorityEmail", | |
| expectedData.applicantInfo.signingAuthorityEmail, | |
| ], | |
| [ | |
| "#SigningAuthority_SigningAuthorityBusinessPhone", | |
| expectedData.applicantInfo.signingAuthorityBusinessPhone, | |
| ], | |
| [ | |
| "#SigningAuthority_SigningAuthorityCellPhone", | |
| "#ApplicantSummary_PhysicalAddressStreet", | |
| expectedData.applicantInfo.physicalAddressStreet, | |
| ], | |
| [ | |
| "#ApplicantSummary_PhysicalAddressStreet2", | |
| expectedData.applicantInfo.physicalAddressStreet2, | |
| ], | |
| [ | |
| "#ApplicantSummary_PhysicalAddressUnit", | |
| expectedData.applicantInfo.physicalAddressUnit, | |
| ], | |
| [ | |
| "#ApplicantSummary_PhysicalAddressCity", | |
| expectedData.applicantInfo.physicalAddressCity, | |
| ], | |
| [ | |
| "#ApplicantSummary_PhysicalAddressProvince", | |
| expectedData.applicantInfo.physicalAddressProvince, | |
| ], | |
| [ | |
| "#ApplicantSummary_PhysicalAddressPostalCode", | |
| expectedData.applicantInfo.physicalAddressPostalCode, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressStreet", | |
| expectedData.applicantInfo.mailingAddressStreet, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressStreet2", | |
| expectedData.applicantInfo.mailingAddressStreet2, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressUnit", | |
| expectedData.applicantInfo.mailingAddressUnit, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressCity", | |
| expectedData.applicantInfo.mailingAddressCity, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressProvince", | |
| expectedData.applicantInfo.mailingAddressProvince, | |
| ], | |
| [ | |
| "#ApplicantInfo_MailingAddressPostalCode", | |
| expectedData.applicantInfo.mailingAddressPostalCode, | |
| ], | |
| [ | |
| "#ApplicantInfo_SigningAuthorityFullName", | |
| expectedData.applicantInfo.signingAuthorityFullName, | |
| ], | |
| [ | |
| "#ApplicantInfo_SigningAuthorityTitle", | |
| expectedData.applicantInfo.signingAuthorityTitle, | |
| ], | |
| [ | |
| "#ApplicantInfo_SigningAuthorityEmail", | |
| expectedData.applicantInfo.signingAuthorityEmail, | |
| ], | |
| [ | |
| "#ApplicantInfo_SigningAuthorityBusinessPhone", | |
| expectedData.applicantInfo.signingAuthorityBusinessPhone, | |
| ], | |
| [ | |
| "#ApplicantInfo_SigningAuthorityCellPhone", |
| expectedData.applicantInfo.mailingAddressPostalCode, | ||
| ], | ||
| [ | ||
| "#SigningAuthority_SigningAuthorityFullName", |
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Selector mismatch between test and page object. The test uses selectors like #PhysicalAddress_Street, #MailingAddress_Street, and #SigningAuthority_SigningAuthorityFullName, but ApplicationDetailsPage defines these as #ApplicantSummary_PhysicalAddressStreet, #ApplicantInfo_MailingAddressStreet, and #ApplicantInfo_SigningAuthorityFullName. These tests will likely fail or not find the expected elements.
| const navPage = NavigationPageInstance(); | ||
| const dashboardPage = DashboardPageInstance(); | ||
| const applicationsPage = ApplicationsPageInstance(); | ||
| const rolesPage = RolesPageInstance(); |
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused variable navPage.
| const navPage = NavigationPageInstance(); | |
| const dashboardPage = DashboardPageInstance(); | |
| const applicationsPage = ApplicationsPageInstance(); | |
| const rolesPage = RolesPageInstance(); | |
| const dashboardPage = DashboardPageInstance(); | |
| const applicationsPage = ApplicationsPageInstance(); | |
| const rolesPage = RolesPageInstance(); | |
| const rolesPage = RolesPageInstance(); |
| ApplicationsPageInstance, | ||
| ApplicationActionBarPageInstance, | ||
| BasePage, | ||
| } from "../utilities"; | ||
|
|
||
| const loginPage = LoginPageInstance(); | ||
| const applicationsPage = ApplicationsPageInstance(); |
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unused variable applicationsPage.
| ApplicationsPageInstance, | |
| ApplicationActionBarPageInstance, | |
| BasePage, | |
| } from "../utilities"; | |
| const loginPage = LoginPageInstance(); | |
| const applicationsPage = ApplicationsPageInstance(); | |
| ApplicationActionBarPageInstance, | |
| BasePage, | |
| } from "../utilities"; | |
| const loginPage = LoginPageInstance(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 14 out of 14 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| }); | ||
|
|
||
| it("Should select all columns and verify table update", () => { | ||
| // actionBarPage.clickColumnsButton(); |
Copilot
AI
Jan 16, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Commented-out code should be removed. If this line was intentionally disabled, add a comment explaining why; otherwise, delete it.
| // actionBarPage.clickColumnsButton(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
× chefsdata.cy.ts fails end-to-end test run PR is not ready to merge.
https://tfs.econ.gov.bc.ca/ECON/Unity/_workitems/edit/31469
Create comprehensive test suite for Application List Action Bar with tests covering search, filters, action buttons, and modals
• Develop ApplicationActionBarPage.ts page object reusable methods for action bar interactions, selection management, and modal operations
• Improved test organization: Restructured tests for test isolation and page refresh
More detail on the implementation here https://tfs.econ.gov.bc.ca/ECON/Unity/_wiki/wikis/Unity.wiki/674/Application-Bar-Action-Validation-Tests