mirror of https://github.com/apache/superset.git
chore: upgrade Cypress to 6.2.1 (#12605)
This commit is contained in:
parent
1b2611c211
commit
29ad78e11a
|
@ -21,7 +21,6 @@ import { CHART_LIST } from './chart_list.helper';
|
|||
describe('chart card view', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit(CHART_LIST);
|
||||
cy.get('[data-test="card-view"]').click();
|
||||
});
|
||||
|
|
|
@ -21,7 +21,6 @@ import { CHART_LIST } from './chart_list.helper';
|
|||
describe('chart card view filters', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit(CHART_LIST);
|
||||
cy.get('[data-test="card-view"]').click();
|
||||
});
|
||||
|
@ -89,7 +88,6 @@ describe('chart card view filters', () => {
|
|||
describe('chart list view filters', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit(CHART_LIST);
|
||||
cy.get('[data-test="list-view"]').click();
|
||||
});
|
||||
|
|
|
@ -21,7 +21,6 @@ import { CHART_LIST } from './chart_list.helper';
|
|||
describe('chart list view', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit(CHART_LIST);
|
||||
cy.get('[data-test="list-view"]').click();
|
||||
});
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
* under the License.
|
||||
*/
|
||||
import { WORLD_HEALTH_DASHBOARD } from './dashboard.helper';
|
||||
import readResponseBlob from '../../utils/readResponseBlob';
|
||||
import {
|
||||
getChartAliases,
|
||||
isLegacyResponse,
|
||||
|
@ -25,19 +24,19 @@ import {
|
|||
} from '../../utils/vizPlugins';
|
||||
|
||||
describe('Dashboard top-level controls', () => {
|
||||
let mapId;
|
||||
let aliases;
|
||||
let mapId: string;
|
||||
let aliases: string[];
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.visit(WORLD_HEALTH_DASHBOARD);
|
||||
|
||||
cy.get('#app').then(data => {
|
||||
const bootstrapData = JSON.parse(data[0].dataset.bootstrap);
|
||||
const bootstrapData = JSON.parse(data[0].dataset.bootstrap || '');
|
||||
const dashboard = bootstrapData.dashboard_data;
|
||||
mapId = dashboard.slices.find(
|
||||
slice => slice.form_data.viz_type === 'world_map',
|
||||
(slice: { form_data: { viz_type: string }; slice_id: number }) =>
|
||||
slice.form_data.viz_type === 'world_map',
|
||||
).slice_id;
|
||||
aliases = getChartAliases(dashboard.slices);
|
||||
});
|
||||
|
@ -50,10 +49,11 @@ describe('Dashboard top-level controls', () => {
|
|||
cy.get(`#slice_${mapId}-controls`).click();
|
||||
cy.get(`[data-test="slice_${mapId}-menu"]`)
|
||||
.find('[data-test="refresh-chart-menu-item"]')
|
||||
.click({ force: true })
|
||||
.then($el => {
|
||||
cy.get($el).should('have.class', 'ant-dropdown-menu-item-disabled');
|
||||
});
|
||||
.click({ force: true });
|
||||
cy.get('[data-test="refresh-chart-menu-item"]').should(
|
||||
'have.class',
|
||||
'ant-dropdown-menu-item-disabled',
|
||||
);
|
||||
|
||||
cy.wait(`@${DASHBOARD_CHART_ALIAS_PREFIX}${mapId}`);
|
||||
cy.get('[data-test="refresh-chart-menu-item"]').should(
|
||||
|
@ -63,7 +63,6 @@ describe('Dashboard top-level controls', () => {
|
|||
});
|
||||
|
||||
it('should allow dashboard level force refresh', () => {
|
||||
// wait the all dash finish loading.
|
||||
cy.wait(aliases);
|
||||
// when charts are not start loading, for example, under a secondary tab,
|
||||
// should allow force refresh
|
||||
|
@ -80,14 +79,14 @@ describe('Dashboard top-level controls', () => {
|
|||
);
|
||||
|
||||
// wait all charts force refreshed.
|
||||
cy.wait(aliases, { responseTimeout: 15000 }).then(xhrs => {
|
||||
xhrs.forEach(async xhr => {
|
||||
const responseBody = await readResponseBlob(xhr.response.body);
|
||||
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(xhr.url).to.have.string('force=true');
|
||||
expect(request.url).to.have.string('force=true');
|
||||
// is_cached in response should be false
|
||||
expect(isCached).to.equal(false);
|
||||
});
|
|
@ -20,7 +20,6 @@ import { WORLD_HEALTH_DASHBOARD, drag } from './dashboard.helper';
|
|||
|
||||
describe('Dashboard edit mode', () => {
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.visit(WORLD_HEALTH_DASHBOARD);
|
||||
cy.get('[data-test="dashboard-header"]')
|
||||
|
@ -43,7 +42,7 @@ describe('Dashboard edit mode', () => {
|
|||
// box plot should be gone
|
||||
cy.get('[data-test="grid-container"]')
|
||||
.find('.box_plot')
|
||||
.should('not.be.visible');
|
||||
.should('not.exist');
|
||||
});
|
||||
|
||||
cy.get('[data-test="dashboard-builder-component-pane-tabs-navigation"]')
|
||||
|
@ -78,7 +77,7 @@ describe('Dashboard edit mode', () => {
|
|||
// Box plot chart should be gone
|
||||
cy.get('[data-test="grid-container"]')
|
||||
.find('.box_plot')
|
||||
.should('not.be.visible');
|
||||
.should('not.exist');
|
||||
|
||||
// undo second step and expect initial items count
|
||||
cy.get('[data-test="undo-action"]').click();
|
||||
|
|
|
@ -71,10 +71,9 @@ function openDashboardEditProperties() {
|
|||
|
||||
describe('Dashboard edit action', () => {
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.visit(WORLD_HEALTH_DASHBOARD);
|
||||
cy.route(`/api/v1/dashboard/1`).as('dashboardGet');
|
||||
cy.intercept(`/api/v1/dashboard/1`).as('dashboardGet');
|
||||
cy.get('.dashboard-grid', { timeout: 50000 })
|
||||
.should('be.visible') // wait for 50 secs to load dashboard
|
||||
.then(() => {
|
||||
|
|
|
@ -25,10 +25,9 @@ describe('Dashboard add to favorite', () => {
|
|||
let isFavoriteDashboard = false;
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
|
||||
cy.route(CHECK_DASHBOARD_FAVORITE_ENDPOINT).as('countFavStar');
|
||||
cy.intercept(CHECK_DASHBOARD_FAVORITE_ENDPOINT).as('countFavStar');
|
||||
cy.visit(WORLD_HEALTH_DASHBOARD);
|
||||
|
||||
cy.wait('@countFavStar').then(xhr => {
|
||||
|
|
|
@ -16,13 +16,13 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import { WORLD_HEALTH_DASHBOARD } from './dashboard.helper';
|
||||
import {
|
||||
getChartAliases,
|
||||
DASHBOARD_CHART_ALIAS_PREFIX,
|
||||
isLegacyResponse,
|
||||
} from '../../utils/vizPlugins';
|
||||
import readResponseBlob from '../../utils/readResponseBlob';
|
||||
parsePostForm,
|
||||
} from 'cypress/utils';
|
||||
import { WORLD_HEALTH_DASHBOARD } from './dashboard.helper';
|
||||
|
||||
interface Slice {
|
||||
slice_id: number;
|
||||
|
@ -43,7 +43,6 @@ describe('Dashboard filter', () => {
|
|||
const getAlias = (id: number) => `@${DASHBOARD_CHART_ALIAS_PREFIX}${id}`;
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
|
||||
cy.visit(WORLD_HEALTH_DASHBOARD);
|
||||
|
@ -87,18 +86,17 @@ describe('Dashboard filter', () => {
|
|||
cy.get('.filter_box button').click({ force: true });
|
||||
cy.wait(aliases.filter(x => x !== getAlias(filterId))).then(requests =>
|
||||
Promise.all(
|
||||
requests.map(async xhr => {
|
||||
expect(xhr.status).to.eq(200);
|
||||
const responseBody = await readResponseBlob(xhr.response.body);
|
||||
requests.map(async ({ response, request }) => {
|
||||
const responseBody = response?.body;
|
||||
let requestFilter;
|
||||
if (isLegacyResponse(responseBody)) {
|
||||
const requestFormData = xhr.request.body as FormData;
|
||||
const requestFormData = parsePostForm(request.body);
|
||||
const requestParams = JSON.parse(
|
||||
requestFormData.get('form_data') as string,
|
||||
requestFormData.form_data as string,
|
||||
);
|
||||
requestFilter = requestParams.extra_filters[0];
|
||||
} else {
|
||||
requestFilter = xhr.request.body.queries[0].filters[0];
|
||||
requestFilter = request.body.queries[0].filters[0];
|
||||
}
|
||||
expect(requestFilter).deep.eq({
|
||||
col: 'region',
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import readResponseBlob from '../../utils/readResponseBlob';
|
||||
import {
|
||||
getChartAliases,
|
||||
isLegacyResponse,
|
||||
|
@ -28,7 +27,6 @@ describe('Dashboard load', () => {
|
|||
let dashboard;
|
||||
let aliases;
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
|
||||
cy.visit(WORLD_HEALTH_DASHBOARD);
|
||||
|
@ -46,16 +44,15 @@ describe('Dashboard load', () => {
|
|||
// wait and verify one-by-one
|
||||
cy.wait(aliases).then(requests =>
|
||||
Promise.all(
|
||||
requests.map(async xhr => {
|
||||
expect(xhr.status).to.eq(200);
|
||||
const responseBody = await readResponseBlob(xhr.response.body);
|
||||
requests.map(async ({ response, request }) => {
|
||||
const responseBody = response?.body;
|
||||
let sliceId;
|
||||
if (isLegacyResponse(responseBody)) {
|
||||
expect(responseBody).to.have.property('errors');
|
||||
expect(responseBody.errors.length).to.eq(0);
|
||||
sliceId = responseBody.form_data.slice_id;
|
||||
} else {
|
||||
sliceId = getSliceIdFromRequestUrl(xhr.url);
|
||||
sliceId = getSliceIdFromRequestUrl(request.url);
|
||||
responseBody.result.forEach(element => {
|
||||
expect(element).to.have.property('error', null);
|
||||
expect(element).to.have.property('status', 'success');
|
||||
|
|
|
@ -20,7 +20,6 @@ import { TABBED_DASHBOARD, drag, resize } from './dashboard.helper';
|
|||
|
||||
describe('Dashboard edit markdown', () => {
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.visit(TABBED_DASHBOARD);
|
||||
});
|
||||
|
@ -85,6 +84,6 @@ describe('Dashboard edit markdown', () => {
|
|||
cy.get('@component-background-first').click('right');
|
||||
cy.get('[data-test="dashboard-component-chart-holder"]')
|
||||
.find('.ace_content')
|
||||
.should('not.be.visible');
|
||||
.should('not.exist');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -21,7 +21,6 @@ import { TABBED_DASHBOARD } from './dashboard.helper';
|
|||
describe('Nativefilters', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit(TABBED_DASHBOARD);
|
||||
});
|
||||
it('should show filter bar and allow user to create filters ', () => {
|
||||
|
|
|
@ -28,14 +28,15 @@ function openDashboardEditProperties() {
|
|||
|
||||
describe('Dashboard save action', () => {
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.visit(WORLD_HEALTH_DASHBOARD);
|
||||
cy.get('#app').then(data => {
|
||||
const bootstrapData = JSON.parse(data[0].dataset.bootstrap);
|
||||
const dashboard = bootstrapData.dashboard_data;
|
||||
const dashboardId = dashboard.id;
|
||||
cy.route('POST', `/superset/copy_dash/${dashboardId}/`).as('copyRequest');
|
||||
cy.intercept('POST', `/superset/copy_dash/${dashboardId}/`).as(
|
||||
'copyRequest',
|
||||
);
|
||||
|
||||
cy.get('[data-test="more-horiz"]').trigger('click', { force: true });
|
||||
cy.get('[data-test="save-as-menu-item"]').trigger('click', {
|
||||
|
@ -56,35 +57,37 @@ describe('Dashboard save action', () => {
|
|||
});
|
||||
|
||||
it('should save/overwrite dashboard', () => {
|
||||
cy.get('[data-test="grid-row-background--transparent"]').within(() => {
|
||||
cy.get('.box_plot', { timeout: 10000 }).should('be.visible');
|
||||
});
|
||||
// should load chart
|
||||
cy.get('.dashboard-grid', { timeout: 50000 }); // wait for 50 secs
|
||||
cy.get('.dashboard-grid', { timeout: 30000 });
|
||||
cy.get('.box_plot').should('be.visible');
|
||||
|
||||
// remove box_plot chart from dashboard
|
||||
cy.get('[data-test="edit-alt"]').click({ timeout: 5000 });
|
||||
cy.get('[data-test="dashboard-delete-component-button"]')
|
||||
.should('be.visible', { timeout: 10000 })
|
||||
.last()
|
||||
.trigger('click');
|
||||
.trigger('moustenter')
|
||||
.click();
|
||||
|
||||
cy.get('[data-test="grid-container"]')
|
||||
.find('.box_plot')
|
||||
.should('not.be.visible');
|
||||
.should('not.exist');
|
||||
|
||||
cy.route('POST', '/superset/save_dash/**/').as('saveRequest');
|
||||
cy.intercept('POST', '/superset/save_dash/**/').as('saveRequest');
|
||||
cy.get('[data-test="dashboard-header"]')
|
||||
.find('[data-test="header-save-button"]')
|
||||
.contains('Save')
|
||||
.trigger('click', { force: true });
|
||||
.click();
|
||||
|
||||
// go back to view mode
|
||||
cy.wait('@saveRequest');
|
||||
cy.get('[data-test="dashboard-header"]')
|
||||
.find('[data-test="edit-alt"]')
|
||||
.click();
|
||||
|
||||
// deleted boxplot should still not exist
|
||||
cy.get('[data-test="grid-container"]')
|
||||
.find('.box_plot', { timeout: 20000 })
|
||||
.should('not.be.visible');
|
||||
.should('not.exist');
|
||||
});
|
||||
|
||||
// TODO: Fix broken test
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import { interceptChart, parsePostForm } from 'cypress/utils';
|
||||
import { TABBED_DASHBOARD } from './dashboard.helper';
|
||||
|
||||
describe('Dashboard tabs', () => {
|
||||
|
@ -23,7 +24,6 @@ describe('Dashboard tabs', () => {
|
|||
let treemapId;
|
||||
let linechartId;
|
||||
let boxplotId;
|
||||
let dashboardId;
|
||||
|
||||
// cypress can not handle window.scrollTo
|
||||
// https://github.com/cypress-io/cypress/issues/2761
|
||||
|
@ -35,7 +35,6 @@ describe('Dashboard tabs', () => {
|
|||
};
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
|
||||
cy.visit(TABBED_DASHBOARD);
|
||||
|
@ -43,7 +42,6 @@ describe('Dashboard tabs', () => {
|
|||
cy.get('#app').then(data => {
|
||||
const bootstrapData = JSON.parse(data[0].dataset.bootstrap);
|
||||
const dashboard = bootstrapData.dashboard_data;
|
||||
dashboardId = dashboard.id;
|
||||
filterId = dashboard.slices.find(
|
||||
slice => slice.form_data.viz_type === 'filter_box',
|
||||
).slice_id;
|
||||
|
@ -56,38 +54,10 @@ describe('Dashboard tabs', () => {
|
|||
linechartId = dashboard.slices.find(
|
||||
slice => slice.form_data.viz_type === 'line',
|
||||
).slice_id;
|
||||
|
||||
const filterFormdata = {
|
||||
slice_id: filterId,
|
||||
};
|
||||
const filterRequest = `/superset/explore_json/?form_data=${JSON.stringify(
|
||||
filterFormdata,
|
||||
)}&dashboard_id=${dashboardId}`;
|
||||
cy.route('POST', filterRequest).as('filterRequest');
|
||||
|
||||
const treemapFormdata = {
|
||||
slice_id: treemapId,
|
||||
};
|
||||
const treemapRequest = `/superset/explore_json/?form_data=${JSON.stringify(
|
||||
treemapFormdata,
|
||||
)}&dashboard_id=${dashboardId}`;
|
||||
cy.route('POST', treemapRequest).as('treemapRequest');
|
||||
|
||||
const linechartFormdata = {
|
||||
slice_id: linechartId,
|
||||
};
|
||||
const linechartRequest = `/superset/explore_json/?form_data=${JSON.stringify(
|
||||
linechartFormdata,
|
||||
)}&dashboard_id=${dashboardId}`;
|
||||
cy.route('POST', linechartRequest).as('linechartRequest');
|
||||
|
||||
const boxplotFormdata = {
|
||||
slice_id: boxplotId,
|
||||
};
|
||||
const boxplotRequest = `/superset/explore_json/?form_data=${JSON.stringify(
|
||||
boxplotFormdata,
|
||||
)}&dashboard_id=${dashboardId}`;
|
||||
cy.route('POST', boxplotRequest).as('boxplotRequest');
|
||||
interceptChart(filterId).as('filterRequest');
|
||||
interceptChart(treemapId).as('treemapRequest');
|
||||
interceptChart(linechartId).as('linechartRequest');
|
||||
interceptChart(boxplotId, false).as('boxplotRequest');
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -129,10 +99,8 @@ describe('Dashboard tabs', () => {
|
|||
.should('be.visible');
|
||||
cy.get('[data-test="grid-container"]')
|
||||
.find('.box_plot')
|
||||
.should('not.be.visible');
|
||||
cy.get('[data-test="grid-container"]')
|
||||
.find('.line')
|
||||
.should('not.be.visible');
|
||||
.should('not.exist');
|
||||
cy.get('[data-test="grid-container"]').find('.line').should('not.exist');
|
||||
|
||||
// click row level tab, see 1 more chart
|
||||
cy.get('[data-test="dashboard-component-tabs"]')
|
||||
|
@ -164,67 +132,54 @@ describe('Dashboard tabs', () => {
|
|||
cy.wait('@treemapRequest');
|
||||
|
||||
// apply filter
|
||||
cy.get('.Select__control').first().should('be.visible');
|
||||
cy.get('.Select__control').first().click({ force: true });
|
||||
cy.get('.Select__control input[type=text]')
|
||||
.first()
|
||||
.should('be.visible')
|
||||
.type('South Asia{enter}', { force: true });
|
||||
cy.get('.Select__control').first().should('be.visible').click();
|
||||
cy.get('.Select__control input[type=text]').first().focus().type('South');
|
||||
cy.get('.Select__option').contains('South Asia').click();
|
||||
cy.get('.filter_box button:not(:disabled)').contains('Apply').click();
|
||||
|
||||
// send new query from same tab
|
||||
cy.wait('@treemapRequest').then(xhr => {
|
||||
const requestFormData = xhr.request.body;
|
||||
const requestParams = JSON.parse(requestFormData.get('form_data'));
|
||||
cy.wait('@treemapRequest').then(({ request }) => {
|
||||
const requestBody = parsePostForm(request.body);
|
||||
const requestParams = JSON.parse(requestBody.form_data);
|
||||
expect(requestParams.extra_filters[0]).deep.eq({
|
||||
col: 'region',
|
||||
op: 'IN',
|
||||
val: ['South Asia'],
|
||||
op: '==',
|
||||
val: 'South Asia',
|
||||
});
|
||||
});
|
||||
|
||||
// click row level tab, send 1 more query
|
||||
cy.get('[data-test="dashboard-component-tabs"]')
|
||||
.last()
|
||||
.find('[data-test="nav-list"]')
|
||||
.children()
|
||||
.as('row-level-tabs');
|
||||
cy.get('@row-level-tabs').last().click();
|
||||
cy.get('.ant-tabs-tab').contains('row tab 2').click();
|
||||
|
||||
cy.wait('@linechartRequest').then(xhr => {
|
||||
const requestFormData = xhr.request.body;
|
||||
const requestParams = JSON.parse(requestFormData.get('form_data'));
|
||||
cy.wait('@linechartRequest').then(({ request }) => {
|
||||
const requestBody = parsePostForm(request.body);
|
||||
const requestParams = JSON.parse(requestBody.form_data);
|
||||
expect(requestParams.extra_filters[0]).deep.eq({
|
||||
col: 'region',
|
||||
op: 'IN',
|
||||
val: ['South Asia'],
|
||||
op: '==',
|
||||
val: 'South Asia',
|
||||
});
|
||||
});
|
||||
|
||||
// click top level tab, send 1 more query
|
||||
cy.get('[data-test="dashboard-component-tabs"]')
|
||||
.first()
|
||||
.find('[data-test="nav-list"]')
|
||||
.children()
|
||||
.as('top-level-tabs');
|
||||
cy.get('.ant-tabs-tab').contains('Tab B').click();
|
||||
|
||||
cy.get('@top-level-tabs').last().click();
|
||||
|
||||
cy.wait('@boxplotRequest').then(xhr => {
|
||||
const requestFormData = xhr.request.body;
|
||||
const requestParams = JSON.parse(requestFormData.get('form_data'));
|
||||
expect(requestParams.extra_filters[0]).deep.eq({
|
||||
cy.wait('@boxplotRequest').then(({ request }) => {
|
||||
const requestBody = request.body;
|
||||
const requestParams = requestBody.queries[0];
|
||||
expect(requestParams.filters[0]).deep.eq({
|
||||
col: 'region',
|
||||
op: 'IN',
|
||||
val: ['South Asia'],
|
||||
op: '==',
|
||||
val: 'South Asia',
|
||||
});
|
||||
});
|
||||
|
||||
// navigate to filter and clear filter
|
||||
cy.get('@top-level-tabs').first().click();
|
||||
|
||||
cy.get('@top-level-tabs').first().click();
|
||||
cy.get('.ant-tabs-tab').contains('Tab A').click();
|
||||
cy.get('.ant-tabs-tab').contains('row tab 1').click();
|
||||
|
||||
cy.get('.Select__clear-indicator').click();
|
||||
cy.get('.filter_box button:not(:disabled)').contains('Apply').click();
|
||||
|
||||
// trigger 1 new query
|
||||
cy.wait('@treemapRequest');
|
||||
|
|
|
@ -16,16 +16,18 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import {
|
||||
isLegacyResponse,
|
||||
getChartAliases,
|
||||
parsePostForm,
|
||||
} from 'cypress/utils';
|
||||
import { WORLD_HEALTH_DASHBOARD } from './dashboard.helper';
|
||||
import { isLegacyResponse, getChartAliases } from '../../utils/vizPlugins';
|
||||
import readResponseBlob from '../../utils/readResponseBlob';
|
||||
|
||||
describe('Dashboard form data', () => {
|
||||
const urlParams = { param1: '123', param2: 'abc' };
|
||||
let dashboard;
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
|
||||
cy.visit(WORLD_HEALTH_DASHBOARD, { qs: urlParams });
|
||||
|
@ -41,16 +43,15 @@ describe('Dashboard form data', () => {
|
|||
// wait and verify one-by-one
|
||||
cy.wait(aliases, { timeout: 18000 }).then(requests =>
|
||||
Promise.all(
|
||||
requests.map(async xhr => {
|
||||
expect(xhr.status).to.eq(200);
|
||||
const responseBody = await readResponseBlob(xhr.response.body);
|
||||
|
||||
requests.map(async ({ response, request }) => {
|
||||
const responseBody = response?.body;
|
||||
if (isLegacyResponse(responseBody)) {
|
||||
const requestFormData = xhr.request.body;
|
||||
const requestParams = JSON.parse(requestFormData.get('form_data'));
|
||||
const requestParams = JSON.parse(
|
||||
parsePostForm(request.body).form_data,
|
||||
);
|
||||
expect(requestParams.url_params).deep.eq(urlParams);
|
||||
} else {
|
||||
xhr.request.body.queries.forEach(query => {
|
||||
request.body.queries.forEach(query => {
|
||||
expect(query.url_params).deep.eq(urlParams);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -21,7 +21,6 @@ import { DASHBOARD_LIST } from './dashboard_list.helper';
|
|||
describe('Dashboard card view', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit(DASHBOARD_LIST);
|
||||
cy.get('[data-test="card-view"]').click();
|
||||
});
|
||||
|
|
|
@ -21,7 +21,6 @@ import { DASHBOARD_LIST } from './dashboard_list.helper';
|
|||
describe('dashboard filters card view', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit(DASHBOARD_LIST);
|
||||
cy.get('[data-test="card-view"]').click();
|
||||
});
|
||||
|
@ -74,7 +73,6 @@ describe('dashboard filters card view', () => {
|
|||
describe('dashboard filters list view', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit(DASHBOARD_LIST);
|
||||
cy.get('[data-test="list-view"]').click();
|
||||
});
|
||||
|
|
|
@ -21,7 +21,6 @@ import { DASHBOARD_LIST } from './dashboard_list.helper';
|
|||
describe('dashboard list view', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit(DASHBOARD_LIST);
|
||||
cy.get('[data-test="list-view"]').click();
|
||||
});
|
||||
|
|
|
@ -20,7 +20,6 @@ import { DATABASE_LIST } from './helper';
|
|||
|
||||
describe('Add database', () => {
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
});
|
||||
|
||||
|
|
|
@ -19,10 +19,9 @@
|
|||
describe('AdhocFilters', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.route('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.route('GET', '/superset/filter/table/*/name').as('filterValues');
|
||||
cy.intercept('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.intercept('GET', '/superset/filter/table/*/name').as('filterValues');
|
||||
cy.visitChartByName('Boys'); // a table chart
|
||||
cy.verifySliceSuccess({ waitAlias: '@postJson' });
|
||||
});
|
||||
|
|
|
@ -19,9 +19,8 @@
|
|||
describe('AdhocMetrics', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.route('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.intercept('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.visitChartByName('Num Births Trend');
|
||||
cy.verifySliceSuccess({ waitAlias: '@postJson' });
|
||||
});
|
||||
|
|
|
@ -19,9 +19,8 @@
|
|||
describe('Advanced analytics', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.route('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.intercept('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('postJson');
|
||||
});
|
||||
|
||||
it('Create custom time compare', () => {
|
||||
|
@ -60,9 +59,8 @@ describe('Advanced analytics', () => {
|
|||
describe('Annotations', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.route('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.intercept('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('postJson');
|
||||
});
|
||||
|
||||
it('Create formula annotation y-axis goal line', () => {
|
||||
|
|
|
@ -21,8 +21,7 @@ import { FORM_DATA_DEFAULTS, NUM_METRIC } from './visualizations/shared.helper';
|
|||
describe('No Results', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('No results message shows up', () => {
|
||||
|
@ -43,9 +42,7 @@ describe('No Results', () => {
|
|||
};
|
||||
|
||||
cy.visitChartByParams(JSON.stringify(formData));
|
||||
cy.wait('@getJson').then(async xhr => {
|
||||
expect(xhr.status).to.eq(200);
|
||||
});
|
||||
cy.wait('@getJson').its('response.statusCode').should('eq', 200);
|
||||
cy.get('div.chart-container').contains('No Results');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -29,9 +29,8 @@ describe('Datasource control', () => {
|
|||
let numScripts = 0;
|
||||
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.route('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.intercept('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.visitChartByName('Num Births Trend');
|
||||
cy.verifySliceSuccess({ waitAlias: '@postJson' });
|
||||
|
||||
|
@ -91,9 +90,8 @@ describe('Datasource control', () => {
|
|||
describe('VizType control', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.route('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.intercept('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('postJson');
|
||||
});
|
||||
|
||||
it('Can change vizType', () => {
|
||||
|
@ -123,9 +121,8 @@ describe('VizType control', () => {
|
|||
describe('Time range filter', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.route('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.intercept('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('postJson');
|
||||
});
|
||||
|
||||
it('Advanced time_range params', () => {
|
||||
|
@ -237,10 +234,9 @@ describe('Time range filter', () => {
|
|||
|
||||
describe('Groupby control', () => {
|
||||
it('Set groupby', () => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.route('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.intercept('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.visitChartByName('Num Births Trend');
|
||||
cy.verifySliceSuccess({ waitAlias: '@postJson' });
|
||||
|
||||
|
|
|
@ -27,9 +27,8 @@ describe('Edit FilterBox Chart', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work with default date filter', () => {
|
||||
|
|
|
@ -30,9 +30,8 @@ const apiURL = (endpoint, queryObject) =>
|
|||
describe('Test explore links', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.route('POST', '/superset/explore_json/**').as('postJson');
|
||||
cy.intercept('GET', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('postJson');
|
||||
});
|
||||
|
||||
it('Open and close view query modal', () => {
|
||||
|
@ -50,7 +49,7 @@ describe('Test explore links', () => {
|
|||
});
|
||||
|
||||
it('Visit short link', () => {
|
||||
cy.route('POST', 'r/shortner/').as('getShortUrl');
|
||||
cy.intercept('POST', 'r/shortner/').as('getShortUrl');
|
||||
|
||||
cy.visitChartByName('Growth Rate');
|
||||
cy.verifySliceSuccess({ waitAlias: '@postJson' });
|
||||
|
|
|
@ -16,8 +16,6 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import readResponseBlob from '../../../utils/readResponseBlob';
|
||||
|
||||
describe('Visualization > Area', () => {
|
||||
const AREA_FORM_DATA = {
|
||||
datasource: '2__table',
|
||||
|
@ -58,9 +56,8 @@ describe('Visualization > Area', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work without groupby', () => {
|
||||
|
@ -96,11 +93,8 @@ describe('Visualization > Area', () => {
|
|||
}),
|
||||
);
|
||||
|
||||
cy.wait('@getJson').then(async xhr => {
|
||||
cy.verifyResponseCodes(xhr);
|
||||
|
||||
const responseBody = await readResponseBlob(xhr.response.body);
|
||||
|
||||
cy.wait('@getJson').then(async ({ response }) => {
|
||||
const responseBody = response?.body;
|
||||
// Make sure data is sorted correctly
|
||||
const firstRow = responseBody.data[0].values;
|
||||
const secondRow = responseBody.data[1].values;
|
||||
|
|
|
@ -49,8 +49,7 @@ describe('Visualization > Big Number with Trendline', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work', () => {
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
* under the License.
|
||||
*/
|
||||
import { FORM_DATA_DEFAULTS, NUM_METRIC } from './shared.helper';
|
||||
import readResponseBlob from '../../../utils/readResponseBlob';
|
||||
|
||||
// Big Number Total
|
||||
|
||||
describe('Visualization > Big Number Total', () => {
|
||||
const BIG_NUMBER_DEFAULTS = {
|
||||
|
@ -29,8 +26,7 @@ describe('Visualization > Big Number Total', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('Test big number chart with adhoc metric', () => {
|
||||
|
@ -74,11 +70,9 @@ describe('Visualization > Big Number Total', () => {
|
|||
};
|
||||
|
||||
cy.visitChartByParams(JSON.stringify(formData));
|
||||
cy.wait(['@getJson']).then(async xhr => {
|
||||
cy.verifyResponseCodes(xhr);
|
||||
cy.wait(['@getJson']).then(async ({ response }) => {
|
||||
cy.verifySliceContainer();
|
||||
|
||||
const responseBody = await readResponseBlob(xhr.response.body);
|
||||
const responseBody = response?.body;
|
||||
expect(responseBody.query).not.contains(formData.groupby[0]);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -38,9 +38,8 @@ describe('Visualization > Box Plot', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/api/v1/chart/data*').as('getJson');
|
||||
cy.intercept('POST', '/api/v1/chart/data*').as('getJson');
|
||||
});
|
||||
|
||||
it('should work', () => {
|
||||
|
|
|
@ -52,9 +52,8 @@ describe('Visualization > Bubble', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
// Number of circles are pretty unstable when there are a lot of circles
|
||||
|
|
|
@ -52,9 +52,8 @@ describe('Visualization > Compare', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work without groupby', () => {
|
||||
|
|
|
@ -23,8 +23,7 @@ describe('Visualization > Distribution bar chart', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work with adhoc metric', () => {
|
||||
|
|
|
@ -40,9 +40,8 @@ describe('Visualization > Dual Line', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work', () => {
|
||||
|
|
|
@ -42,9 +42,8 @@ describe('Visualization > Histogram', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work without groupby', () => {
|
||||
|
|
|
@ -23,8 +23,7 @@ describe('Visualization > Line', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should show validator error when no metric', () => {
|
||||
|
|
|
@ -42,9 +42,8 @@ describe('Visualization > Pie', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/api/v1/chart/data*').as('getJson');
|
||||
cy.intercept('POST', '/api/v1/chart/data*').as('getJson');
|
||||
});
|
||||
|
||||
it('should work with ad-hoc metric', () => {
|
||||
|
|
|
@ -59,9 +59,8 @@ describe('Visualization > Pivot Table', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work with single groupby', () => {
|
||||
|
|
|
@ -38,9 +38,8 @@ describe('Visualization > Sankey', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work', () => {
|
||||
|
|
|
@ -37,9 +37,8 @@ describe('Visualization > Sunburst', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work without secondary metric', () => {
|
||||
|
|
|
@ -23,11 +23,14 @@ import {
|
|||
MAX_STATE,
|
||||
SIMPLE_FILTER,
|
||||
} from './shared.helper';
|
||||
import readResponseBlob from '../../../utils/readResponseBlob';
|
||||
|
||||
// Table
|
||||
describe('Visualization > Table', () => {
|
||||
const VIZ_DEFAULTS = { ...FORM_DATA_DEFAULTS, viz_type: 'table' };
|
||||
const VIZ_DEFAULTS = {
|
||||
...FORM_DATA_DEFAULTS,
|
||||
viz_type: 'table',
|
||||
row_limit: 1000,
|
||||
};
|
||||
|
||||
const PERCENT_METRIC = {
|
||||
expressionType: 'SQL',
|
||||
|
@ -41,8 +44,7 @@ describe('Visualization > Table', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('Use default time column', () => {
|
||||
|
@ -98,7 +100,7 @@ describe('Visualization > Table', () => {
|
|||
});
|
||||
cy.verifySliceSuccess({
|
||||
waitAlias: '@getJson',
|
||||
querySubstring: /groupby.*name/,
|
||||
querySubstring: /group by.*name/i,
|
||||
chartSelector: 'table',
|
||||
});
|
||||
});
|
||||
|
@ -114,37 +116,34 @@ describe('Visualization > Table', () => {
|
|||
});
|
||||
cy.verifySliceSuccess({
|
||||
waitAlias: '@getJson',
|
||||
querySubstring: /groupby.*name/,
|
||||
querySubstring: /group by.*name/i,
|
||||
chartSelector: 'table',
|
||||
});
|
||||
});
|
||||
|
||||
it('Handle sorting correctly', () => {
|
||||
// should handle sorting correctly
|
||||
cy.get('.chart-container th').contains('name').click();
|
||||
cy.get('.chart-container td:nth-child(2):eq(0)').contains('Aaron');
|
||||
cy.get('.chart-container td:nth-child(2):eq(0)').contains('Abigail');
|
||||
cy.get('.chart-container th').contains('Time').click().click();
|
||||
cy.get('.chart-container td:nth-child(1):eq(0)').contains('2008');
|
||||
});
|
||||
|
||||
it('Test table with percent metrics and groupby', () => {
|
||||
const formData = {
|
||||
cy.visitChartByParams({
|
||||
...VIZ_DEFAULTS,
|
||||
percent_metrics: PERCENT_METRIC,
|
||||
metrics: [],
|
||||
groupby: ['name'],
|
||||
};
|
||||
cy.visitChartByParams(JSON.stringify(formData));
|
||||
});
|
||||
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'table' });
|
||||
});
|
||||
|
||||
it('Test table with groupby order desc', () => {
|
||||
const formData = {
|
||||
cy.visitChartByParams({
|
||||
...VIZ_DEFAULTS,
|
||||
metrics: NUM_METRIC,
|
||||
groupby: ['name'],
|
||||
order_desc: true,
|
||||
};
|
||||
cy.visitChartByParams(JSON.stringify(formData));
|
||||
});
|
||||
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'table' });
|
||||
});
|
||||
|
||||
|
@ -157,37 +156,34 @@ describe('Visualization > Table', () => {
|
|||
row_limit: limit,
|
||||
};
|
||||
cy.visitChartByParams(JSON.stringify(formData));
|
||||
cy.wait('@getJson').then(async xhr => {
|
||||
cy.verifyResponseCodes(xhr);
|
||||
cy.wait('@getJson').then(({ response }) => {
|
||||
cy.verifySliceContainer('table');
|
||||
const responseBody = await readResponseBlob(xhr.response.body);
|
||||
expect(responseBody.data.records.length).to.eq(limit);
|
||||
expect(response?.body.data.records.length).to.eq(limit);
|
||||
});
|
||||
cy.get('span.label-danger').contains('10 rows');
|
||||
});
|
||||
|
||||
it('Test table with columns and row limit', () => {
|
||||
const formData = {
|
||||
cy.visitChartByParams({
|
||||
...VIZ_DEFAULTS,
|
||||
// should still work when query_mode is not-set/invalid
|
||||
query_mode: undefined,
|
||||
all_columns: ['name'],
|
||||
metrics: [],
|
||||
row_limit: 10,
|
||||
};
|
||||
cy.visitChartByParams(JSON.stringify(formData));
|
||||
});
|
||||
|
||||
// should display in raw records mode
|
||||
cy.get('div[data-test="query_mode"] .btn.active').contains('Raw Records');
|
||||
cy.get('div[data-test="all_columns"]').should('be.visible');
|
||||
cy.get('div[data-test="groupby"]').should('not.be.visible');
|
||||
cy.get('div[data-test="groupby"]').should('not.exist');
|
||||
|
||||
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'table' });
|
||||
|
||||
// should allow switch to aggregate mode
|
||||
cy.get('div[data-test="query_mode"] .btn').contains('Aggregate').click();
|
||||
cy.get('div[data-test="query_mode"] .btn.active').contains('Aggregate');
|
||||
cy.get('div[data-test="all_columns"]').should('not.be.visible');
|
||||
cy.get('div[data-test="all_columns"]').should('not.exist');
|
||||
cy.get('div[data-test="groupby"]').should('be.visible');
|
||||
});
|
||||
|
||||
|
@ -204,10 +200,9 @@ describe('Visualization > Table', () => {
|
|||
};
|
||||
|
||||
cy.visitChartByParams(JSON.stringify(formData));
|
||||
cy.wait('@getJson').then(async xhr => {
|
||||
cy.verifyResponseCodes(xhr);
|
||||
cy.wait('@getJson').then(({ response }) => {
|
||||
cy.verifySliceContainer('table');
|
||||
const responseBody = await readResponseBlob(xhr.response.body);
|
||||
const responseBody = response?.body;
|
||||
const { records } = responseBody.data;
|
||||
expect(records[0].num).greaterThan(records[records.length - 1].num);
|
||||
});
|
||||
|
@ -233,7 +228,7 @@ describe('Visualization > Table', () => {
|
|||
cy.visitChartByParams(JSON.stringify(formData));
|
||||
cy.verifySliceSuccess({
|
||||
waitAlias: '@getJson',
|
||||
querySubstring: formData.groupby[0],
|
||||
querySubstring: /group by.*state/i,
|
||||
chartSelector: 'table',
|
||||
});
|
||||
cy.get('td').contains(/\d*%/);
|
||||
|
|
|
@ -23,8 +23,7 @@ describe('Visualization > Time TableViz', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('Test time series table multiple metrics last year total', () => {
|
||||
|
|
|
@ -43,9 +43,8 @@ describe('Visualization > Treemap', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work', () => {
|
||||
|
|
|
@ -40,9 +40,8 @@ describe('Visualization > World Map', () => {
|
|||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.server();
|
||||
cy.login();
|
||||
cy.route('POST', '/superset/explore_json/**').as('getJson');
|
||||
cy.intercept('POST', '/superset/explore_json/**').as('getJson');
|
||||
});
|
||||
|
||||
it('should work with ad-hoc metric', () => {
|
||||
|
|
|
@ -26,7 +26,6 @@ function parseClockStr(node: JQuery) {
|
|||
describe('SqlLab query panel', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit('/superset/sqllab');
|
||||
});
|
||||
|
||||
|
@ -43,7 +42,7 @@ describe('SqlLab query panel', () => {
|
|||
expanded_columns: [],
|
||||
};
|
||||
|
||||
cy.route({
|
||||
cy.intercept({
|
||||
method: 'POST',
|
||||
url: '/superset/sql_json/',
|
||||
delay: 1000,
|
||||
|
@ -93,8 +92,8 @@ describe('SqlLab query panel', () => {
|
|||
});
|
||||
|
||||
it.skip('successfully saves a query', () => {
|
||||
cy.route('savedqueryviewapi/**').as('getSavedQuery');
|
||||
cy.route('superset/tables/**').as('getTables');
|
||||
cy.intercept('savedqueryviewapi/**').as('getSavedQuery');
|
||||
cy.intercept('superset/tables/**').as('getTables');
|
||||
|
||||
const query =
|
||||
'SELECT ds, gender, name, num FROM main.birth_names ORDER BY name LIMIT 3';
|
||||
|
|
|
@ -21,14 +21,13 @@ import { selectResultsTab } from './sqllab.helper';
|
|||
describe('SqlLab datasource panel', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit('/superset/sqllab');
|
||||
});
|
||||
|
||||
// TODO the test bellow is flaky, and has been disabled for the time being
|
||||
// (notice the `it.skip`)
|
||||
it.skip('creates a table preview when a database, schema, and table are selected', () => {
|
||||
cy.route('/superset/table/**').as('tableMetadata');
|
||||
cy.intercept('/superset/table/**').as('tableMetadata');
|
||||
|
||||
// it should have dropdowns to select database, schema, and table
|
||||
cy.get('.sql-toolbar .Select').should('have.length', 3);
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
describe('SqlLab query tabs', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.server();
|
||||
cy.visit('/superset/sqllab');
|
||||
});
|
||||
|
||||
|
|
|
@ -34,14 +34,6 @@ declare namespace Cypress {
|
|||
visitChartByName(name: string): cy;
|
||||
visitChartById(id: number): cy;
|
||||
|
||||
/**
|
||||
* Verify a waitXHR response and parse response JSON.
|
||||
*/
|
||||
verifyResponseCodes(
|
||||
xhr: WaitXHR,
|
||||
callback?: (result: JSONValue) => void,
|
||||
): cy;
|
||||
|
||||
/**
|
||||
* Verify slice container renders.
|
||||
*/
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
* under the License.
|
||||
*/
|
||||
import '@cypress/code-coverage/support';
|
||||
import readResponseBlob from '../utils/readResponseBlob';
|
||||
|
||||
const BASE_EXPLORE_URL = '/superset/explore/?form_data=';
|
||||
|
||||
|
@ -55,19 +54,8 @@ Cypress.Commands.add('visitChartById', chartId =>
|
|||
Cypress.Commands.add('visitChartByParams', params => {
|
||||
const queryString =
|
||||
typeof params === 'string' ? params : JSON.stringify(params);
|
||||
return cy.visit(`${BASE_EXPLORE_URL}${queryString}`);
|
||||
});
|
||||
|
||||
Cypress.Commands.add('verifyResponseCodes', (xhr: XMLHttpRequest, callback) => {
|
||||
// After a wait response check for valid response
|
||||
expect(xhr.status).to.eq(200);
|
||||
readResponseBlob(xhr.response.body).then(res => {
|
||||
expect(res).to.not.be.instanceOf(Error);
|
||||
if (callback) {
|
||||
callback(res);
|
||||
}
|
||||
});
|
||||
return cy;
|
||||
const url = `${BASE_EXPLORE_URL}${queryString}`;
|
||||
return cy.visit(url);
|
||||
});
|
||||
|
||||
Cypress.Commands.add('verifySliceContainer', chartSelector => {
|
||||
|
@ -98,20 +86,19 @@ Cypress.Commands.add(
|
|||
chartSelector: JQuery.Selector;
|
||||
querySubstring?: string | RegExp;
|
||||
}) => {
|
||||
cy.wait(waitAlias).then(xhr => {
|
||||
cy.wait(waitAlias).then(({ response }) => {
|
||||
cy.verifySliceContainer(chartSelector);
|
||||
cy.verifyResponseCodes(xhr, responseBody => {
|
||||
if (querySubstring) {
|
||||
const query = responseBody
|
||||
? (responseBody as { query: string }).query
|
||||
: '';
|
||||
if (querySubstring instanceof RegExp) {
|
||||
expect(query).to.match(querySubstring);
|
||||
} else {
|
||||
expect(query).to.contain(querySubstring);
|
||||
}
|
||||
const responseBody = response?.body;
|
||||
if (querySubstring) {
|
||||
const query = responseBody
|
||||
? (responseBody as { query: string }).query
|
||||
: '';
|
||||
if (querySubstring instanceof RegExp) {
|
||||
expect(query).to.match(querySubstring);
|
||||
} else {
|
||||
expect(query).to.contain(querySubstring);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
return cy;
|
||||
},
|
||||
|
|
|
@ -16,17 +16,5 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
/**
|
||||
* Read XHR response and parse it as JSON.
|
||||
*/
|
||||
export default function readResponseBlob(blob: Blob | JSONValue) {
|
||||
return new Promise<ReturnType<JSON['parse']>>(resolve => {
|
||||
if (blob instanceof Blob) {
|
||||
const reader = new FileReader();
|
||||
reader.onload = () => resolve(JSON.parse(String(reader.result || '')));
|
||||
reader.readAsText(blob);
|
||||
} else {
|
||||
resolve(blob);
|
||||
}
|
||||
});
|
||||
}
|
||||
export * from './vizPlugins';
|
||||
export { default as parsePostForm } from './parsePostForm';
|
|
@ -0,0 +1,60 @@
|
|||
/**
|
||||
* 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.
|
||||
*/
|
||||
/**
|
||||
* Parse multipart form data sent via POST requests.
|
||||
*/
|
||||
export default function parsePostForm(requestBody: ArrayBuffer) {
|
||||
type ParsedFields = Record<string, string[] | string>;
|
||||
if (requestBody.constructor.name !== 'ArrayBuffer') {
|
||||
return (requestBody as unknown) as ParsedFields;
|
||||
}
|
||||
const lines = new TextDecoder('utf-8').decode(requestBody).split('\n');
|
||||
const fields: ParsedFields = {};
|
||||
let key = '';
|
||||
let value: string[] = [];
|
||||
|
||||
function addField(key: string, value: string) {
|
||||
if (key in fields) {
|
||||
if (Array.isArray(fields[key])) {
|
||||
(fields[key] as string[]).push(value);
|
||||
} else {
|
||||
fields[key] = [fields[key] as string, value];
|
||||
}
|
||||
} else {
|
||||
fields[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
lines.forEach(line => {
|
||||
const nameMatch = line.match(/Content-Disposition: form-data; name="(.*)"/);
|
||||
if (nameMatch) {
|
||||
if (key) {
|
||||
addField(key, value.join('\n'));
|
||||
}
|
||||
key = nameMatch[1];
|
||||
value = [];
|
||||
} else if (!/----.*FormBoundary/.test(line)) {
|
||||
value.push(line);
|
||||
}
|
||||
});
|
||||
if (key && value) {
|
||||
addField(key, value.join('\n'));
|
||||
}
|
||||
return fields;
|
||||
}
|
|
@ -23,30 +23,42 @@ export const DASHBOARD_CHART_ALIAS_PREFIX = 'getJson_';
|
|||
export function isLegacyChart(vizType: string): boolean {
|
||||
return !V1_PLUGINS.includes(vizType);
|
||||
}
|
||||
|
||||
export function isLegacyResponse(response: any): boolean {
|
||||
return !response.result;
|
||||
}
|
||||
export function getSliceIdFromRequestUrl(url: string): string {
|
||||
|
||||
export function getSliceIdFromRequestUrl(url: string) {
|
||||
const address = new URL(url);
|
||||
const query = address.searchParams.get('form_data');
|
||||
return query?.match(/\d+/)[0];
|
||||
return query?.match(/\d+/)?.[0];
|
||||
}
|
||||
|
||||
export function getChartAliases(slices: any[]): string[] {
|
||||
const aliases: string[] = [];
|
||||
Array.from(slices).forEach(slice => {
|
||||
const vizType = slice.form_data.viz_type;
|
||||
const isLegacy = isLegacyChart(vizType);
|
||||
const alias = `${DASHBOARD_CHART_ALIAS_PREFIX}${slice.slice_id}`;
|
||||
const formData = `{"slice_id":${slice.slice_id}}`;
|
||||
const formData = encodeURIComponent(`{"slice_id":${slice.slice_id}}`);
|
||||
if (isLegacy) {
|
||||
const route = `/superset/explore_json/?*${formData}*`;
|
||||
cy.route('POST', `${route}`).as(alias);
|
||||
cy.intercept('POST', `${route}`).as(alias);
|
||||
aliases.push(`@${alias}`);
|
||||
} else {
|
||||
const route = `/api/v1/chart/data?*${formData}*`;
|
||||
cy.route('POST', `${route}`).as(alias);
|
||||
cy.intercept('POST', `${route}`).as(alias);
|
||||
aliases.push(`@${alias}`);
|
||||
}
|
||||
});
|
||||
return aliases;
|
||||
}
|
||||
|
||||
export function interceptChart(sliceId: number, isLegacy = true) {
|
||||
const formData = { slice_id: sliceId };
|
||||
const encodedFormData = encodeURIComponent(JSON.stringify(formData));
|
||||
const url = isLegacy
|
||||
? `**/superset/explore_json/?form_data=${encodedFormData}*`
|
||||
: `**/api/v1/chart/data?form_data=${encodedFormData}*`;
|
||||
return cy.intercept('POST', url);
|
||||
}
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
"requires": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
|
||||
"integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
|
||||
"version": "7.12.11",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
|
||||
"integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
|
||||
"requires": {
|
||||
"@babel/highlight": "^7.10.4"
|
||||
}
|
||||
|
@ -34,21 +34,21 @@
|
|||
}
|
||||
},
|
||||
"@babel/generator": {
|
||||
"version": "7.12.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz",
|
||||
"integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==",
|
||||
"version": "7.12.11",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz",
|
||||
"integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.12.5",
|
||||
"@babel/types": "^7.12.11",
|
||||
"jsesc": "^2.5.1",
|
||||
"source-map": "^0.5.0"
|
||||
}
|
||||
},
|
||||
"@babel/helper-annotate-as-pure": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz",
|
||||
"integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==",
|
||||
"version": "7.12.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz",
|
||||
"integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.10.4"
|
||||
"@babel/types": "^7.12.10"
|
||||
}
|
||||
},
|
||||
"@babel/helper-builder-binary-assignment-operator-visitor": {
|
||||
|
@ -60,25 +60,6 @@
|
|||
"@babel/types": "^7.10.4"
|
||||
}
|
||||
},
|
||||
"@babel/helper-builder-react-jsx": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz",
|
||||
"integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==",
|
||||
"requires": {
|
||||
"@babel/helper-annotate-as-pure": "^7.10.4",
|
||||
"@babel/types": "^7.10.4"
|
||||
}
|
||||
},
|
||||
"@babel/helper-builder-react-jsx-experimental": {
|
||||
"version": "7.12.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz",
|
||||
"integrity": "sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==",
|
||||
"requires": {
|
||||
"@babel/helper-annotate-as-pure": "^7.10.4",
|
||||
"@babel/helper-module-imports": "^7.12.1",
|
||||
"@babel/types": "^7.12.1"
|
||||
}
|
||||
},
|
||||
"@babel/helper-create-class-features-plugin": {
|
||||
"version": "7.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz",
|
||||
|
@ -92,12 +73,11 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-create-regexp-features-plugin": {
|
||||
"version": "7.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz",
|
||||
"integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==",
|
||||
"version": "7.12.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz",
|
||||
"integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==",
|
||||
"requires": {
|
||||
"@babel/helper-annotate-as-pure": "^7.10.4",
|
||||
"@babel/helper-regex": "^7.10.4",
|
||||
"regexpu-core": "^4.7.1"
|
||||
}
|
||||
},
|
||||
|
@ -120,21 +100,21 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-function-name": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz",
|
||||
"integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==",
|
||||
"version": "7.12.11",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz",
|
||||
"integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==",
|
||||
"requires": {
|
||||
"@babel/helper-get-function-arity": "^7.10.4",
|
||||
"@babel/template": "^7.10.4",
|
||||
"@babel/types": "^7.10.4"
|
||||
"@babel/helper-get-function-arity": "^7.12.10",
|
||||
"@babel/template": "^7.12.7",
|
||||
"@babel/types": "^7.12.11"
|
||||
}
|
||||
},
|
||||
"@babel/helper-get-function-arity": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz",
|
||||
"integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==",
|
||||
"version": "7.12.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz",
|
||||
"integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.10.4"
|
||||
"@babel/types": "^7.12.10"
|
||||
}
|
||||
},
|
||||
"@babel/helper-hoist-variables": {
|
||||
|
@ -146,11 +126,11 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-member-expression-to-functions": {
|
||||
"version": "7.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz",
|
||||
"integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==",
|
||||
"version": "7.12.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz",
|
||||
"integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.12.1"
|
||||
"@babel/types": "^7.12.7"
|
||||
}
|
||||
},
|
||||
"@babel/helper-module-imports": {
|
||||
|
@ -178,11 +158,11 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-optimise-call-expression": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz",
|
||||
"integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==",
|
||||
"version": "7.12.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz",
|
||||
"integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.10.4"
|
||||
"@babel/types": "^7.12.10"
|
||||
}
|
||||
},
|
||||
"@babel/helper-plugin-utils": {
|
||||
|
@ -190,14 +170,6 @@
|
|||
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
|
||||
"integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg=="
|
||||
},
|
||||
"@babel/helper-regex": {
|
||||
"version": "7.10.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz",
|
||||
"integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==",
|
||||
"requires": {
|
||||
"lodash": "^4.17.19"
|
||||
}
|
||||
},
|
||||
"@babel/helper-remap-async-to-generator": {
|
||||
"version": "7.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz",
|
||||
|
@ -209,14 +181,14 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-replace-supers": {
|
||||
"version": "7.12.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz",
|
||||
"integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==",
|
||||
"version": "7.12.11",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz",
|
||||
"integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==",
|
||||
"requires": {
|
||||
"@babel/helper-member-expression-to-functions": "^7.12.1",
|
||||
"@babel/helper-optimise-call-expression": "^7.10.4",
|
||||
"@babel/traverse": "^7.12.5",
|
||||
"@babel/types": "^7.12.5"
|
||||
"@babel/helper-member-expression-to-functions": "^7.12.7",
|
||||
"@babel/helper-optimise-call-expression": "^7.12.10",
|
||||
"@babel/traverse": "^7.12.10",
|
||||
"@babel/types": "^7.12.11"
|
||||
}
|
||||
},
|
||||
"@babel/helper-simple-access": {
|
||||
|
@ -236,17 +208,17 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-split-export-declaration": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
|
||||
"integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==",
|
||||
"version": "7.12.11",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz",
|
||||
"integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.11.0"
|
||||
"@babel/types": "^7.12.11"
|
||||
}
|
||||
},
|
||||
"@babel/helper-validator-identifier": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
|
||||
"integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw=="
|
||||
"version": "7.12.11",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
|
||||
"integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw=="
|
||||
},
|
||||
"@babel/helper-wrap-function": {
|
||||
"version": "7.12.3",
|
||||
|
@ -280,14 +252,14 @@
|
|||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.12.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz",
|
||||
"integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ=="
|
||||
"version": "7.12.11",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz",
|
||||
"integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg=="
|
||||
},
|
||||
"@babel/plugin-proposal-async-generator-functions": {
|
||||
"version": "7.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz",
|
||||
"integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==",
|
||||
"version": "7.12.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz",
|
||||
"integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.10.4",
|
||||
"@babel/helper-remap-async-to-generator": "^7.12.1",
|
||||
|
@ -406,9 +378,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/plugin-transform-block-scoping": {
|
||||
"version": "7.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz",
|
||||
"integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==",
|
||||
"version": "7.12.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz",
|
||||
"integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.10.4"
|
||||
}
|
||||
|
@ -595,14 +567,15 @@
|
|||
}
|
||||
},
|
||||
"@babel/plugin-transform-react-jsx": {
|
||||
"version": "7.12.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.5.tgz",
|
||||
"integrity": "sha512-2xkcPqqrYiOQgSlM/iwto1paPijjsDbUynN13tI6bosDz/jOW3CRzYguIE8wKX32h+msbBM22Dv5fwrFkUOZjQ==",
|
||||
"version": "7.12.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.12.tgz",
|
||||
"integrity": "sha512-JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw==",
|
||||
"requires": {
|
||||
"@babel/helper-builder-react-jsx": "^7.10.4",
|
||||
"@babel/helper-builder-react-jsx-experimental": "^7.12.1",
|
||||
"@babel/helper-annotate-as-pure": "^7.12.10",
|
||||
"@babel/helper-module-imports": "^7.12.5",
|
||||
"@babel/helper-plugin-utils": "^7.10.4",
|
||||
"@babel/plugin-syntax-jsx": "^7.12.1"
|
||||
"@babel/plugin-syntax-jsx": "^7.12.1",
|
||||
"@babel/types": "^7.12.12"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-react-jsx-self": {
|
||||
|
@ -666,12 +639,11 @@
|
|||
}
|
||||
},
|
||||
"@babel/plugin-transform-sticky-regex": {
|
||||
"version": "7.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz",
|
||||
"integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==",
|
||||
"version": "7.12.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz",
|
||||
"integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.10.4",
|
||||
"@babel/helper-regex": "^7.10.4"
|
||||
"@babel/helper-plugin-utils": "^7.10.4"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-template-literals": {
|
||||
|
@ -683,9 +655,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/plugin-transform-typeof-symbol": {
|
||||
"version": "7.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz",
|
||||
"integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==",
|
||||
"version": "7.12.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz",
|
||||
"integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.10.4"
|
||||
}
|
||||
|
@ -794,37 +766,37 @@
|
|||
}
|
||||
},
|
||||
"@babel/template": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
|
||||
"integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==",
|
||||
"version": "7.12.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz",
|
||||
"integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==",
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.10.4",
|
||||
"@babel/parser": "^7.10.4",
|
||||
"@babel/types": "^7.10.4"
|
||||
"@babel/parser": "^7.12.7",
|
||||
"@babel/types": "^7.12.7"
|
||||
}
|
||||
},
|
||||
"@babel/traverse": {
|
||||
"version": "7.12.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz",
|
||||
"integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==",
|
||||
"version": "7.12.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz",
|
||||
"integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==",
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.10.4",
|
||||
"@babel/generator": "^7.12.5",
|
||||
"@babel/helper-function-name": "^7.10.4",
|
||||
"@babel/helper-split-export-declaration": "^7.11.0",
|
||||
"@babel/parser": "^7.12.5",
|
||||
"@babel/types": "^7.12.5",
|
||||
"@babel/code-frame": "^7.12.11",
|
||||
"@babel/generator": "^7.12.11",
|
||||
"@babel/helper-function-name": "^7.12.11",
|
||||
"@babel/helper-split-export-declaration": "^7.12.11",
|
||||
"@babel/parser": "^7.12.11",
|
||||
"@babel/types": "^7.12.12",
|
||||
"debug": "^4.1.0",
|
||||
"globals": "^11.1.0",
|
||||
"lodash": "^4.17.19"
|
||||
}
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.12.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz",
|
||||
"integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==",
|
||||
"version": "7.12.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz",
|
||||
"integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==",
|
||||
"requires": {
|
||||
"@babel/helper-validator-identifier": "^7.10.4",
|
||||
"@babel/helper-validator-identifier": "^7.12.11",
|
||||
"lodash": "^4.17.19",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
}
|
||||
|
@ -859,6 +831,14 @@
|
|||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz",
|
||||
"integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw=="
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
|
||||
|
@ -873,27 +853,17 @@
|
|||
}
|
||||
},
|
||||
"@cypress/code-coverage": {
|
||||
"version": "3.8.3",
|
||||
"resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.8.3.tgz",
|
||||
"integrity": "sha512-4R9bDS4CivckXaJudL5lKxXtB99LkO2RWE4a5M/P7VXGrXynQQDYbP07O9Jyjw/VjELWBV+xC3AOfYaU+wCHNQ==",
|
||||
"version": "3.9.2",
|
||||
"resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.9.2.tgz",
|
||||
"integrity": "sha512-YnzkRBxdsY/Ek/68nr+MowqW59UJsd28j10mFOerW/wrSkuxGrWvOldMs8Y4tU70L4fgd4wDPqGGMer3+UzbwA==",
|
||||
"requires": {
|
||||
"@cypress/browserify-preprocessor": "3.0.1",
|
||||
"debug": "4.2.0",
|
||||
"debug": "4.3.1",
|
||||
"execa": "4.1.0",
|
||||
"globby": "11.0.1",
|
||||
"globby": "11.0.2",
|
||||
"istanbul-lib-coverage": "3.0.0",
|
||||
"js-yaml": "3.14.0",
|
||||
"js-yaml": "3.14.1",
|
||||
"nyc": "15.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
|
||||
"integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
|
||||
"requires": {
|
||||
"ms": "2.1.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@cypress/listr-verbose-renderer": {
|
||||
|
@ -968,9 +938,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.2.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
||||
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
|
||||
"version": "3.2.7",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
|
||||
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
|
@ -996,25 +966,25 @@
|
|||
"integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw=="
|
||||
},
|
||||
"@nodelib/fs.scandir": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
|
||||
"integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==",
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz",
|
||||
"integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==",
|
||||
"requires": {
|
||||
"@nodelib/fs.stat": "2.0.3",
|
||||
"@nodelib/fs.stat": "2.0.4",
|
||||
"run-parallel": "^1.1.9"
|
||||
}
|
||||
},
|
||||
"@nodelib/fs.stat": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
|
||||
"integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA=="
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz",
|
||||
"integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q=="
|
||||
},
|
||||
"@nodelib/fs.walk": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz",
|
||||
"integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==",
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz",
|
||||
"integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==",
|
||||
"requires": {
|
||||
"@nodelib/fs.scandir": "2.1.3",
|
||||
"@nodelib/fs.scandir": "2.1.4",
|
||||
"fastq": "^1.6.0"
|
||||
}
|
||||
},
|
||||
|
@ -1629,15 +1599,15 @@
|
|||
}
|
||||
},
|
||||
"browserslist": {
|
||||
"version": "4.14.7",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz",
|
||||
"integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==",
|
||||
"version": "4.16.1",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz",
|
||||
"integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==",
|
||||
"requires": {
|
||||
"caniuse-lite": "^1.0.30001157",
|
||||
"caniuse-lite": "^1.0.30001173",
|
||||
"colorette": "^1.2.1",
|
||||
"electron-to-chromium": "^1.3.591",
|
||||
"electron-to-chromium": "^1.3.634",
|
||||
"escalade": "^3.1.1",
|
||||
"node-releases": "^1.1.66"
|
||||
"node-releases": "^1.1.69"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
|
@ -1709,12 +1679,12 @@
|
|||
}
|
||||
},
|
||||
"call-bind": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz",
|
||||
"integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==",
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
|
||||
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1",
|
||||
"get-intrinsic": "^1.0.0"
|
||||
"get-intrinsic": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"camelcase": {
|
||||
|
@ -1723,9 +1693,9 @@
|
|||
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001157",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz",
|
||||
"integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA=="
|
||||
"version": "1.0.30001178",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001178.tgz",
|
||||
"integrity": "sha512-VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ=="
|
||||
},
|
||||
"caseless": {
|
||||
"version": "0.12.0",
|
||||
|
@ -2009,9 +1979,9 @@
|
|||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
|
||||
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
|
||||
"integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
|
||||
"dev": true
|
||||
},
|
||||
"common-tags": {
|
||||
|
@ -2070,11 +2040,11 @@
|
|||
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
|
||||
},
|
||||
"core-js-compat": {
|
||||
"version": "3.7.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz",
|
||||
"integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==",
|
||||
"version": "3.8.2",
|
||||
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.2.tgz",
|
||||
"integrity": "sha512-LO8uL9lOIyRRrQmZxHZFl1RV+ZbcsAkFWTktn5SmH40WgLtSNYN4m4W2v9ONT147PxBY/XrRhrWq8TlvObyUjQ==",
|
||||
"requires": {
|
||||
"browserslist": "^4.14.6",
|
||||
"browserslist": "^4.16.0",
|
||||
"semver": "7.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
|
@ -2160,9 +2130,9 @@
|
|||
}
|
||||
},
|
||||
"cypress": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/cypress/-/cypress-5.5.0.tgz",
|
||||
"integrity": "sha512-UHEiTca8AUTevbT2pWkHQlxoHtXmbq+h6Eiu/Mz8DqpNkF98zjTBLv/HFiKJUU5rQzp9EwSWtms33p5TWCJ8tQ==",
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/cypress/-/cypress-6.3.0.tgz",
|
||||
"integrity": "sha512-Ec6TAFOxdSB2HPINNJ1f7z75pENXcfCaQkz+A9j0eGSvusFJ2NNErq650DexCbNJAnCQkPqXB4XPH9kXnSQnUA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@cypress/listr-verbose-renderer": "^0.4.1",
|
||||
|
@ -2177,7 +2147,7 @@
|
|||
"chalk": "^4.1.0",
|
||||
"check-more-types": "^2.24.0",
|
||||
"cli-table3": "~0.6.0",
|
||||
"commander": "^4.1.1",
|
||||
"commander": "^5.1.0",
|
||||
"common-tags": "^1.8.0",
|
||||
"debug": "^4.1.1",
|
||||
"eventemitter2": "^6.4.2",
|
||||
|
@ -2277,11 +2247,11 @@
|
|||
"dev": true
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
|
||||
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
"ms": "2.1.2"
|
||||
}
|
||||
},
|
||||
"decamelize": {
|
||||
|
@ -2437,9 +2407,9 @@
|
|||
}
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.595",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.595.tgz",
|
||||
"integrity": "sha512-JpaBIhdBkF9FLG7x06ONfe0f5bxPrxRcq0X+Sc8vsCt+OPWIzxOD+qM71NEHLGbDfN9Q6hbtHRv4/dnvcOxo6g=="
|
||||
"version": "1.3.641",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.641.tgz",
|
||||
"integrity": "sha512-b0DLhsHSHESC1I+Nx6n4w4Lr61chMd3m/av1rZQhS2IXTzaS5BMM5N+ldWdMIlni9CITMRM09m8He4+YV/92TA=="
|
||||
},
|
||||
"elegant-spinner": {
|
||||
"version": "1.0.1",
|
||||
|
@ -2497,9 +2467,9 @@
|
|||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||
},
|
||||
"eslint-plugin-cypress": {
|
||||
"version": "2.11.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.1.tgz",
|
||||
"integrity": "sha512-MxMYoReSO5+IZMGgpBZHHSx64zYPSPTpXDwsgW7ChlJTF/sA+obqRbHplxD6sBStE+g4Mi0LCLkG4t9liu//mQ==",
|
||||
"version": "2.11.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.2.tgz",
|
||||
"integrity": "sha512-1SergF1sGbVhsf7MYfOLiBhdOg6wqyeV9pXUAIDIffYTGMN3dTBQS9nFAzhLsHhO+Bn0GaVM1Ecm71XUidQ7VA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"globals": "^11.12.0"
|
||||
|
@ -2742,9 +2712,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"fast-glob": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz",
|
||||
"integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==",
|
||||
"version": "3.2.5",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
|
||||
"integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==",
|
||||
"requires": {
|
||||
"@nodelib/fs.stat": "^2.0.2",
|
||||
"@nodelib/fs.walk": "^1.2.3",
|
||||
|
@ -2814,9 +2784,9 @@
|
|||
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
|
||||
},
|
||||
"fastq": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz",
|
||||
"integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==",
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz",
|
||||
"integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==",
|
||||
"requires": {
|
||||
"reusify": "^1.0.4"
|
||||
}
|
||||
|
@ -2931,15 +2901,23 @@
|
|||
"integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg=="
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
|
||||
"integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
|
||||
"version": "9.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
||||
"integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"at-least-node": "^1.0.0",
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^6.0.1",
|
||||
"universalify": "^1.0.0"
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"universalify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
||||
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"fs.realpath": {
|
||||
|
@ -2978,9 +2956,9 @@
|
|||
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
|
||||
},
|
||||
"get-intrinsic": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz",
|
||||
"integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==",
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz",
|
||||
"integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==",
|
||||
"requires": {
|
||||
"function-bind": "^1.1.1",
|
||||
"has": "^1.0.3",
|
||||
|
@ -3056,12 +3034,12 @@
|
|||
}
|
||||
},
|
||||
"global-dirs": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz",
|
||||
"integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==",
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz",
|
||||
"integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ini": "^1.3.5"
|
||||
"ini": "1.3.7"
|
||||
}
|
||||
},
|
||||
"globals": {
|
||||
|
@ -3070,9 +3048,9 @@
|
|||
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
|
||||
},
|
||||
"globby": {
|
||||
"version": "11.0.1",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz",
|
||||
"integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==",
|
||||
"version": "11.0.2",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz",
|
||||
"integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==",
|
||||
"requires": {
|
||||
"array-union": "^2.1.0",
|
||||
"dir-glob": "^3.0.1",
|
||||
|
@ -3281,9 +3259,9 @@
|
|||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
|
||||
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
|
||||
"version": "1.3.7",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
|
||||
"integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
|
||||
"dev": true
|
||||
},
|
||||
"inline-source-map": {
|
||||
|
@ -3360,9 +3338,9 @@
|
|||
}
|
||||
},
|
||||
"is-core-module": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz",
|
||||
"integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
|
||||
"integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
|
||||
"requires": {
|
||||
"has": "^1.0.3"
|
||||
}
|
||||
|
@ -3543,24 +3521,23 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@babel/core": {
|
||||
"version": "7.12.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz",
|
||||
"integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==",
|
||||
"version": "7.12.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz",
|
||||
"integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==",
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.10.4",
|
||||
"@babel/generator": "^7.12.1",
|
||||
"@babel/generator": "^7.12.10",
|
||||
"@babel/helper-module-transforms": "^7.12.1",
|
||||
"@babel/helpers": "^7.12.1",
|
||||
"@babel/parser": "^7.12.3",
|
||||
"@babel/template": "^7.10.4",
|
||||
"@babel/traverse": "^7.12.1",
|
||||
"@babel/types": "^7.12.1",
|
||||
"@babel/helpers": "^7.12.5",
|
||||
"@babel/parser": "^7.12.10",
|
||||
"@babel/template": "^7.12.7",
|
||||
"@babel/traverse": "^7.12.10",
|
||||
"@babel/types": "^7.12.10",
|
||||
"convert-source-map": "^1.7.0",
|
||||
"debug": "^4.1.0",
|
||||
"gensync": "^1.0.0-beta.1",
|
||||
"json5": "^2.1.2",
|
||||
"lodash": "^4.17.19",
|
||||
"resolve": "^1.3.2",
|
||||
"semver": "^5.4.1",
|
||||
"source-map": "^0.5.0"
|
||||
},
|
||||
|
@ -3665,9 +3642,9 @@
|
|||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
||||
},
|
||||
"js-yaml": {
|
||||
"version": "3.14.0",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
|
||||
"integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
|
||||
"version": "3.14.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
||||
"requires": {
|
||||
"argparse": "^1.0.7",
|
||||
"esprima": "^4.0.0"
|
||||
|
@ -3719,12 +3696,19 @@
|
|||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz",
|
||||
"integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==",
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6",
|
||||
"universalify": "^1.0.0"
|
||||
"universalify": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"universalify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
||||
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"jsonify": {
|
||||
|
@ -4137,18 +4121,18 @@
|
|||
}
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.44.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
|
||||
"integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
|
||||
"version": "1.45.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz",
|
||||
"integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==",
|
||||
"dev": true
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.27",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
|
||||
"integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
|
||||
"version": "2.1.28",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz",
|
||||
"integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mime-db": "1.44.0"
|
||||
"mime-db": "1.45.0"
|
||||
}
|
||||
},
|
||||
"mimic-fn": {
|
||||
|
@ -4287,9 +4271,9 @@
|
|||
}
|
||||
},
|
||||
"node-releases": {
|
||||
"version": "1.1.66",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz",
|
||||
"integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg=="
|
||||
"version": "1.1.69",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz",
|
||||
"integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA=="
|
||||
},
|
||||
"normalize-path": {
|
||||
"version": "3.0.0",
|
||||
|
@ -4615,9 +4599,9 @@
|
|||
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
|
||||
},
|
||||
"pretty-bytes": {
|
||||
"version": "5.4.1",
|
||||
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.4.1.tgz",
|
||||
"integrity": "sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA==",
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.5.0.tgz",
|
||||
"integrity": "sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA==",
|
||||
"dev": true
|
||||
},
|
||||
"process": {
|
||||
|
@ -4814,9 +4798,9 @@
|
|||
"integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A=="
|
||||
},
|
||||
"regjsparser": {
|
||||
"version": "0.6.4",
|
||||
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz",
|
||||
"integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==",
|
||||
"version": "0.6.6",
|
||||
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.6.tgz",
|
||||
"integrity": "sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==",
|
||||
"requires": {
|
||||
"jsesc": "~0.5.0"
|
||||
},
|
||||
|
@ -5636,9 +5620,9 @@
|
|||
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="
|
||||
},
|
||||
"uri-js": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
|
||||
"integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
||||
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"punycode": "^2.1.0"
|
||||
|
@ -5803,9 +5787,9 @@
|
|||
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
|
||||
},
|
||||
"y18n": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
|
||||
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
|
||||
"integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ=="
|
||||
},
|
||||
"yargs": {
|
||||
"version": "15.4.1",
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
"author": "Apcahe",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@cypress/code-coverage": "^3.8.3",
|
||||
"@cypress/code-coverage": "^3.9.2",
|
||||
"rison": "^0.1.1",
|
||||
"shortid": "^2.2.15"
|
||||
},
|
||||
"devDependencies": {
|
||||
"cypress": "^5.5.0",
|
||||
"eslint-plugin-cypress": "^2.11.1"
|
||||
"cypress": "^6.3.0",
|
||||
"eslint-plugin-cypress": "^2.11.2"
|
||||
},
|
||||
"nyc": {
|
||||
"reporter": [
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"moduleResolution": "Node",
|
||||
"strict": true,
|
||||
"target": "ES5",
|
||||
"lib": ["ES5", "ES2015", "DOM"],
|
||||
"target": "es2019",
|
||||
"lib": ["es2019", "DOM"],
|
||||
"types": ["cypress"],
|
||||
"allowJs": true,
|
||||
"noEmit": true,
|
||||
|
|
Loading…
Reference in New Issue