| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- import {
- waitForChartLoad,
- ChartSpec,
- getChartAliasesBySpec,
- } from 'cypress/utils';
- import { WORLD_HEALTH_DASHBOARD } from 'cypress/utils/urls';
- import { WORLD_HEALTH_CHARTS } from './utils';
- import { isLegacyResponse } from '../../utils/vizPlugins';
- describe.skip('Dashboard top-level controls', () => {
- beforeEach(() => {
- cy.visit(WORLD_HEALTH_DASHBOARD);
- });
- // flaky test
- it('should allow chart level refresh', () => {
- const mapSpec = WORLD_HEALTH_CHARTS.find(
- ({ viz }) => viz === 'world_map',
- ) as ChartSpec;
- waitForChartLoad(mapSpec).then(gridComponent => {
- const mapId = gridComponent.attr('data-test-chart-id');
- cy.get('[data-test="grid-container"]').find('.world_map').should('exist');
- cy.get(`#slice_${mapId}-controls`).click();
- cy.get(`[data-test="slice_${mapId}-menu"]`)
- .find('[data-test="refresh-chart-menu-item"]')
- .click({ force: true });
- // likely cause for flakiness:
- // The query completes before this assertion happens.
- // Solution: pause the network before clicking, assert, then unpause network.
- cy.get('[data-test="refresh-chart-menu-item"]').should(
- 'have.class',
- 'ant-dropdown-menu-item-disabled',
- );
- waitForChartLoad(mapSpec);
- cy.get('[data-test="refresh-chart-menu-item"]').should(
- 'not.have.class',
- 'ant-dropdown-menu-item-disabled',
- );
- });
- });
- it('should allow dashboard level force refresh', () => {
- // when charts are not start loading, for example, under a secondary tab,
- // should allow force refresh
- WORLD_HEALTH_CHARTS.forEach(waitForChartLoad);
- getChartAliasesBySpec(WORLD_HEALTH_CHARTS).then(aliases => {
- cy.get('[aria-label="ellipsis"]').click();
- cy.get('[data-test="refresh-dashboard-menu-item"]').should(
- 'not.have.class',
- 'ant-dropdown-menu-item-disabled',
- );
- cy.get('[data-test="refresh-dashboard-menu-item"]').click({
- force: true,
- });
- cy.get('[data-test="refresh-dashboard-menu-item"]').should(
- 'have.class',
- 'ant-dropdown-menu-item-disabled',
- );
- // wait all charts force refreshed.
- cy.wait(aliases).then(xhrs => {
- xhrs.forEach(async ({ response, request }) => {
- const responseBody = response?.body;
- const isCached = isLegacyResponse(responseBody)
- ? responseBody.is_cached
- : responseBody.result[0].is_cached;
- // request url should indicate force-refresh operation
- expect(request.url).to.have.string('force=true');
- // is_cached in response should be false
- expect(isCached).to.equal(false);
- });
- });
- });
- cy.get('[aria-label="ellipsis"]').click();
- cy.get('[data-test="refresh-dashboard-menu-item"]').and(
- 'not.have.class',
- 'ant-dropdown-menu-item-disabled',
- );
- });
- });
|