diff --git a/cypress/elements/pivotTable.js b/cypress/elements/pivotTable.js index 3b41d3982d..4463645e36 100644 --- a/cypress/elements/pivotTable.js +++ b/cypress/elements/pivotTable.js @@ -1,6 +1,9 @@ const valueCellEl = 'visualization-value-cell' const headerCellEl = 'visualization-column-header' +export const expectTableToBeVisible = () => + cy.get('.pivot-table-container').should('have.length', 1).and('be.visible') + export const clickTableValueCell = (index) => cy.getBySel(valueCellEl).eq(index).click() diff --git a/cypress/integration/options/totals.cy.js b/cypress/integration/options/totals.cy.js new file mode 100644 index 0000000000..81d5adfe8e --- /dev/null +++ b/cypress/integration/options/totals.cy.js @@ -0,0 +1,82 @@ +import { + AXIS_ID_COLUMNS, + AXIS_ID_ROWS, + DIMENSION_ID_DATA, + DIMENSION_ID_PERIOD, + VIS_TYPE_PIVOT_TABLE, + visTypeDisplayNames, +} from '@dhis2/analytics' +import { checkCheckbox } from '../../elements/common.js' +import { + clickDimensionModalHideButton, + clickDimensionModalUpdateButton, + expectDimensionModalToBeVisible, + selectAllItemsByButton, + selectDataElements, + selectFixedPeriods, + unselectAllItemsByButton, +} from '../../elements/dimensionModal/index.js' +import { + clickContextMenuAdd, + openContextMenu as openDimPanelContextMenu, + openDimension, +} from '../../elements/dimensionsPanel.js' +import { clickContextMenuMove, openContextMenu } from '../../elements/layout.js' +import { openOptionsModal } from '../../elements/menuBar.js' +import { + OPTIONS_TAB_DATA, + clickOptionsModalHideButton, +} from '../../elements/optionsModal/index.js' +import { + colTotalsOptionEl, + expectColumnsTotalsToBeChecked, +} from '../../elements/optionsModal/totals.js' +import { expectTableToBeVisible } from '../../elements/pivotTable.js' +import { goToStartPage } from '../../elements/startScreen.js' +import { changeVisType } from '../../elements/visualizationTypeSelector.js' +import { TEST_CUSTOM_DIMENSIONS } from '../../utils/data.js' + +const AREA_DIMENSION = TEST_CUSTOM_DIMENSIONS.find((dim) => dim.name === 'Area') + +describe('Options - Column totals', () => { + describe('Regression test for DHIS2-17297', () => { + it('does not crash', () => { + goToStartPage() + changeVisType(visTypeDisplayNames[VIS_TYPE_PIVOT_TABLE]) + + openOptionsModal(OPTIONS_TAB_DATA) + checkCheckbox(colTotalsOptionEl) + + expectColumnsTotalsToBeChecked() + + clickOptionsModalHideButton() + + openContextMenu(DIMENSION_ID_DATA) + clickContextMenuMove(DIMENSION_ID_DATA, AXIS_ID_ROWS) + openContextMenu(DIMENSION_ID_PERIOD) + clickContextMenuMove(DIMENSION_ID_PERIOD, AXIS_ID_COLUMNS) + + openDimension(DIMENSION_ID_DATA) + selectDataElements(['ART enrollment stage 1']) + clickDimensionModalHideButton() + + const year = new Date().getFullYear().toString() + openDimension(DIMENSION_ID_PERIOD) + unselectAllItemsByButton() + selectFixedPeriods( + [`May ${year}`, `June ${year}`, `July ${year}`], + 'Monthly' + ) + clickDimensionModalHideButton() + + openDimPanelContextMenu(AREA_DIMENSION.id) + clickContextMenuAdd(AREA_DIMENSION.id, AXIS_ID_ROWS) + expectDimensionModalToBeVisible(AREA_DIMENSION.id) + selectAllItemsByButton() + + clickDimensionModalUpdateButton() + + expectTableToBeVisible() + }) + }) +}) diff --git a/package.json b/package.json index 2ff9121ea5..d0f56dd4f2 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "typescript": "^4.8.4" }, "dependencies": { - "@dhis2/analytics": "^26.6.5", + "@dhis2/analytics": "^26.6.8", "@dhis2/app-runtime": "^3.7.0", "@dhis2/app-runtime-adapter-d2": "^1.1.0", "@dhis2/app-service-datastore": "^1.0.0-beta.3", diff --git a/yarn.lock b/yarn.lock index 0cc8819006..4b576076b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2028,10 +2028,10 @@ classnames "^2.3.1" prop-types "^15.7.2" -"@dhis2/analytics@^26.6.5": - version "26.6.5" - resolved "https://registry.yarnpkg.com/@dhis2/analytics/-/analytics-26.6.5.tgz#44ee29a279c37f3969096d859bc0f07d953e3f42" - integrity sha512-ob6kNEEkIAC50RtKuUZWi8Y04uwsPHK/EiYhzxZkSOdS5wFm8X+88KZrD//fILXQjwMhJvl/4+F/T0qVxOF/jQ== +"@dhis2/analytics@^26.6.8": + version "26.6.8" + resolved "https://registry.yarnpkg.com/@dhis2/analytics/-/analytics-26.6.8.tgz#859f8086198664a9ea14cea149ce7bdf449a19a2" + integrity sha512-9l8001MAx+q8K1Qklui8pfF0rrv3MSLA1dEtM93rBODSsQwRE9pbt5wN44i9+n7nAgc7iItBehAQ1hMJ8j7yHg== dependencies: "@dhis2/d2-ui-rich-text" "^7.4.1" "@dhis2/multi-calendar-dates" "1.0.0"