Skip to content
Merged

Dev #1989

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
76c09b3
AB#31740 add basic scaffold for B2B auths
AndreGAot Feb 3, 2026
e4abf97
AB#31740 add to api key filter for applicant portal integration
AndreGAot Feb 4, 2026
6d23694
AB#31740 update profile endpoint routes
AndreGAot Feb 5, 2026
6bf0563
AB#31740 recommended updates
AndreGAot Feb 5, 2026
0413b4e
AB#31740 update from codeQL suggestions
AndreGAot Feb 5, 2026
2b82a6e
Merge pull request #1974 from bcgov/feature/AB#31740-b2b-profile-auth
AndreGAot Feb 5, 2026
172d54b
AB#31676 start with tenant map lookup
AndreGAot Feb 6, 2026
6e2b494
AB#30398 - Add Creation Date to Applicant list default view
plavoie-BC Feb 9, 2026
3a13bbb
AB#31363 - Improve styling of date controls on Grant Applications
plavoie-BC Feb 9, 2026
6c0a04d
AB#31676 make the oidc sub submission scrape dynamic
AndreGAot Feb 9, 2026
4c2f0a3
AB#31676 SQ cleanup
AndreGAot Feb 9, 2026
22f32ea
AB#31676 more SQ
AndreGAot Feb 9, 2026
a397ad7
AB#31843 - Docker - Use ADD instruction to retrieve remote resources
plavoie-BC Feb 9, 2026
8f84455
AB#31843 - SQ - Remove old TODO comments
plavoie-BC Feb 9, 2026
f964900
AB#31676 codeQL suggestions
AndreGAot Feb 9, 2026
1815eaa
AB#31676 remove using
AndreGAot Feb 9, 2026
efb912a
AB#31676 optimize recon worker
AndreGAot Feb 10, 2026
8db04bd
AB#31676 appsetting file cleanup
AndreGAot Feb 10, 2026
cdd3faa
AB#31824: Dont delete supplier
aurelio-aot Feb 6, 2026
9cd2a30
AB#31824: Deassociate Applicant from Supplier
aurelio-aot Feb 9, 2026
61b29a0
Potential fix for pull request finding 'Constant condition'
aurelio-aot Feb 9, 2026
bdd1555
AB#31676 more CodeQL
AndreGAot Feb 10, 2026
549b105
Merge pull request #1978 from bcgov/feature/AB#31676-portal-tenant-lo…
JamesPasta Feb 10, 2026
efd372d
Merge pull request #1982 from bcgov/bugfix/AB#31824-deassociate-supplier
JamesPasta Feb 10, 2026
4e4b2b0
AB#31676 update key compare for better security
AndreGAot Feb 10, 2026
010dc99
Merge pull request #1977 from bcgov/feature/AB#31363-submission-date-…
JamesPasta Feb 10, 2026
91159d0
Merge branch 'dev' into feature/AB#31843-sonarqube-cleanup
plavoie-BC Feb 10, 2026
a33e6b6
Apply suggestion from @Copilot
AndreGAot Feb 10, 2026
71d8727
Merge pull request #1983 from bcgov/feature/AB#31676-portal-tenant-lo…
AndreGAot Feb 10, 2026
d4c5fd7
Added The ApplicationsActionBar spec
Stephan-McColm Feb 10, 2026
a5240a9
AB#31843 - Update HtmlSanitizer from 9.0.889 to 9.0.892 to resolve vu…
plavoie-BC Feb 10, 2026
1bdcb52
Merge branch 'feature/AB#31843-sonarqube-cleanup' of https://github.c…
plavoie-BC Feb 10, 2026
94055e1
Merge branch 'dev' into feature/AB#31843-sonarqube-cleanup
plavoie-BC Feb 10, 2026
3d88040
feature/AB#31004
DavidBrightBcGov Feb 10, 2026
7124829
Improved ApplicationsActionBar spec
Stephan-McColm Feb 11, 2026
fabe4e6
Improved ApplicationsActionBar Spec - asserts visibility of the colum…
Stephan-McColm Feb 11, 2026
704896b
Includes menu selection
Stephan-McColm Feb 11, 2026
afaa394
Fixed the payment test
Stephan-McColm Feb 11, 2026
7288407
Refinements to flow.
Stephan-McColm Feb 11, 2026
52485e6
feature/AB#31826 Fixed basicEmail.cy.ts to be able to login irrespect…
Stephan-McColm Feb 11, 2026
547701c
Merge pull request #1985 from bcgov/feature/AB#31826-Applications-Act…
DarylTodosichuk Feb 11, 2026
f781b2b
Merge pull request #1980 from bcgov/feature/AB#31843-sonarqube-cleanup
JamesPasta Feb 11, 2026
f52826a
Updated the sorting method call based on copilots recommendations
DavidBrightBcGov Feb 11, 2026
6889e0d
AB#31867: Validate empty SupplierNumber in PaymentRequest frontend
aurelio-aot Feb 11, 2026
21c6bf7
AB#31867: Dont save empty suppliernumber from CAS
aurelio-aot Feb 11, 2026
db681be
AB#31867: Fix sonarqube issue
aurelio-aot Feb 11, 2026
3e51bc8
AB#31867: Improve validation message wording
aurelio-aot Feb 11, 2026
67648e6
Merge pull request #1984 from bcgov/feature/AB#31004-links-column-app…
JamesPasta Feb 11, 2026
42437d5
Merge pull request #1988 from bcgov/feature/AB#31867-check-empty-supp…
JamesPasta Feb 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
512 changes: 512 additions & 0 deletions applications/Unity.AutoUI/cypress/e2e/ApplicationsActionBar.cy.ts

Large diffs are not rendered by default.

56 changes: 46 additions & 10 deletions applications/Unity.AutoUI/cypress/e2e/basicEmail.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,55 @@ describe('Send an email', () => {

const TEST_EMAIL_SUBJECT = `Smoke Test Email ${timestamp}`

function ensureLoggedInToGrantApplications() {
// Headless runs specs sequentially in the same browser process.
// Do not assume logged-out or logged-in. Detect UI state like chefsdata.cy.ts does.
cy.visit(Cypress.env('webapp.url'))

cy.get('body', { timeout: STANDARD_TIMEOUT }).then(($body) => {
// Already authenticated
if ($body.find('button:contains("VIEW APPLICATIONS")').length > 0) {
cy.contains('VIEW APPLICATIONS', { timeout: STANDARD_TIMEOUT }).click({ force: true })
return
}

// Not authenticated
if ($body.find('button:contains("LOGIN")').length > 0) {
cy.contains('LOGIN', { timeout: STANDARD_TIMEOUT }).should('exist').click({ force: true })

cy.get('body', { timeout: STANDARD_TIMEOUT }).then(($loginBody) => {
// IDIR chooser may or may not appear
if ($loginBody.find(':contains("IDIR")').length > 0) {
cy.contains('IDIR', { timeout: STANDARD_TIMEOUT }).click({ force: true })
}

cy.get('body', { timeout: STANDARD_TIMEOUT }).then(($authBody) => {
// Only type creds if the login form is actually present
if ($authBody.find('#user').length > 0) {
cy.get('#user', { timeout: STANDARD_TIMEOUT }).type(Cypress.env('test1username'))
cy.get('#password', { timeout: STANDARD_TIMEOUT }).type(Cypress.env('test1password'))
cy.contains('Continue', { timeout: STANDARD_TIMEOUT }).click({ force: true })
} else {
cy.log('Already authenticated')
}
})
})

return
}

throw new Error('Unable to determine authentication state')
})

cy.location('pathname', { timeout: 30000 }).should('include', '/GrantApplications')
}

function switchToDefaultGrantsProgramIfAvailable() {
cy.get('body').then(($body) => {
const hasUserInitials = $body.find('.unity-user-initials').length > 0

if (!hasUserInitials) {
cy.log('Skipping tenant switch: no user initials menu found')
cy.log('Skipping tenant: no user initials menu found')
return
}

Expand All @@ -50,7 +93,7 @@ describe('Send an email', () => {
})

if (switchLink.length === 0) {
cy.log('Skipping tenant switch: "Switch Grant Programs" not present for this user/session')
cy.log('Skipping tenant: "Switch Grant Programs" not present for this user/session')
cy.get('body').click(0, 0)
return
}
Expand Down Expand Up @@ -97,15 +140,13 @@ describe('Send an email', () => {
return
}

// Fallback: find the subject anywhere in a TD (scoped to avoid brittle class names)
cy.contains('td', subject, { timeout: STANDARD_TIMEOUT })
.should('exist')
.click()
})
}

function confirmSendDialogIfPresent() {
// Wait until either a bootstrap modal is shown, or SweetAlert container appears, or confirm button exists.
cy.get('body', { timeout: STANDARD_TIMEOUT }).should(($b) => {
const hasBootstrapShownModal = $b.find('.modal.show').length > 0
const hasSwal = $b.find('.swal2-container').length > 0
Expand All @@ -116,11 +157,9 @@ describe('Send an email', () => {
cy.get('body', { timeout: STANDARD_TIMEOUT }).then(($b) => {
const hasSwal = $b.find('.swal2-container').length > 0
if (hasSwal) {
// SweetAlert2 style
cy.get('.swal2-container', { timeout: STANDARD_TIMEOUT }).should('be.visible')
cy.contains('.swal2-container', 'Are you sure', { timeout: STANDARD_TIMEOUT }).should('exist')

// Typical confirm button class, with fallback to text match
if ($b.find('.swal2-confirm').length > 0) {
cy.get('.swal2-confirm', { timeout: STANDARD_TIMEOUT }).should('be.visible').click()
} else {
Expand All @@ -131,14 +170,12 @@ describe('Send an email', () => {

const hasBootstrapShownModal = $b.find('.modal.show').length > 0
if (hasBootstrapShownModal) {
// Bootstrap modal: assert the shown modal, not the inner content div
cy.get('.modal.show', { timeout: STANDARD_TIMEOUT })
.should('be.visible')
.within(() => {
cy.contains('Are you sure you want to send this email?', { timeout: STANDARD_TIMEOUT })
.should('exist')

// Prefer the known id if present, otherwise click a button with expected intent text
if (Cypress.$('#btn-confirm-send').length > 0) {
cy.get('#btn-confirm-send', { timeout: STANDARD_TIMEOUT })
.should('exist')
Expand All @@ -151,15 +188,14 @@ describe('Send an email', () => {
return
}

// Last resort: confirm button exists but modal might not be "visible" by Cypress standards
cy.get('#btn-confirm-send', { timeout: STANDARD_TIMEOUT })
.should('exist')
.click({ force: true })
})
}

it('Login', () => {
cy.login()
ensureLoggedInToGrantApplications()
})

it('Switch to Default Grants Program if available', () => {
Expand Down
Loading
Loading