feat(stage): add Formatted/Unformatted toggle to the staging page
- Mirrors the review page's toggle: getstagetable.sas now also webouts fmt_stagetable (SAS-formatted), selectFormattedRows() picks between it and the raw stagetable, falling back to raw if fmt data is absent - Adds stage.cy.ts e2e coverage and wires it into both build.yaml and release.yaml's cypress --spec lists (previously out of sync with each other on viewbox.cy.ts too)
This commit is contained in:
1 parent
42e02cdb05
commit
74c38e1641
12 files changed
+168
-4
No files matched your search
@@ -0,0 +1,61 @@
|
||||
const hostUrl = Cypress.env('hosturl')
|
||||
const appLocation = Cypress.env('appLocation')
|
||||
const longerCommandTimeout = Cypress.env('longerCommandTimeout')
|
||||
|
||||
context('stage tests: ', function () {
|
||||
this.beforeAll(() => {
|
||||
cy.visit(`${hostUrl}/SASLogon/logout`)
|
||||
cy.loginAndUpdateValidKey()
|
||||
})
|
||||
|
||||
this.beforeEach(() => {
|
||||
cy.visit(hostUrl + appLocation)
|
||||
|
||||
visitPage('stage/DC20221007T122326121_612316_7259')
|
||||
})
|
||||
|
||||
// getstagetable's mock ignores the table_id param entirely, so any id in
|
||||
// the URL resolves to the same fixture row - no need to submit a real
|
||||
// table first just to reach this page.
|
||||
it('1 | Formatted/Unformatted toggle switches between fmt_stagetable and stagetable, defaulting to formatted', () => {
|
||||
cy.get('.app-loading', { timeout: longerCommandTimeout }).should(
|
||||
'not.exist'
|
||||
)
|
||||
|
||||
getCellByHeaderAndRow(0, 'SOME_DATE').should('have.text', '12FEB1960')
|
||||
|
||||
cy.get('.formatted-values-toggle').click()
|
||||
|
||||
getCellByHeaderAndRow(0, 'SOME_DATE').should('have.text', '42')
|
||||
|
||||
// Toggling back reverts to the formatted view.
|
||||
cy.get('.formatted-values-toggle').click()
|
||||
|
||||
getCellByHeaderAndRow(0, 'SOME_DATE').should('have.text', '12FEB1960')
|
||||
})
|
||||
})
|
||||
|
||||
const visitPage = (url: string) => {
|
||||
cy.visit(`${hostUrl}${appLocation}/#/${url}`)
|
||||
}
|
||||
|
||||
// Locates a body cell by its column's header text rather than a hardcoded
|
||||
// childNodes index - same helper as editor.cy.ts's own.
|
||||
const getCellByHeaderAndRow = (rowIndex: number, headerText: string) => {
|
||||
return cy
|
||||
.get('.ht_clone_top .htCore thead tr th')
|
||||
.should(($ths) => {
|
||||
const texts = [...$ths].map((th) => th.innerText.trim())
|
||||
expect(texts).to.include(headerText)
|
||||
})
|
||||
.then(($ths) => {
|
||||
const index = [...$ths].findIndex(
|
||||
(th) => th.innerText.trim() === headerText
|
||||
)
|
||||
|
||||
return cy
|
||||
.get('.ht_master tbody tr')
|
||||
.then((rows: any) => rows[rowIndex].childNodes[index])
|
||||
.then((cell) => cy.get(cell))
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user