build(deps-dev): bump eslint-plugin-cypress from 2.11.2 to 3.4.0 in /superset-frontend + corresponding refactor (#29964)

Signed-off-by: hainenber <dotronghai96@gmail.com>
This commit is contained in:
Đỗ Trọng Hải 2024-08-20 09:17:05 +07:00 committed by GitHub
parent 5ec3093deb
commit 907fc8a713
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
33 changed files with 404 additions and 320 deletions

View File

@ -86,10 +86,7 @@ describe('Charts list', () => {
saveChartToDashboard('3 - Sample dashboard');
visitChartList();
cy.getBySel('count-crosslinks').should('be.visible');
cy.getBySel('crosslinks')
.first()
.trigger('mouseover')
.then(() => {
cy.getBySel('crosslinks').first().trigger('mouseover');
cy.get('.ant-tooltip')
.contains('3 - Sample dashboard')
.invoke('removeAttr', 'target')
@ -97,7 +94,6 @@ describe('Charts list', () => {
cy.wait('@get');
});
});
});
describe('list mode', () => {
before(() => {
@ -293,9 +289,8 @@ describe('Charts list', () => {
// edits in list-view
setGridMode('list');
cy.getBySel('edit-alt').eq(1).click();
cy.getBySel('properties-modal-name-input')
.clear()
.type('1 - Sample chart');
cy.getBySel('properties-modal-name-input').clear();
cy.getBySel('properties-modal-name-input').type('1 - Sample chart');
cy.get('button:contains("Save")').click();
cy.wait('@update');
cy.getBySel('table-row').eq(1).contains('1 - Sample chart');

View File

@ -43,11 +43,8 @@ const openTableContextMenu = (
cellContent: string,
tableSelector = "[data-test-viz-type='table']",
) => {
cy.get(tableSelector)
.scrollIntoView()
.contains(cellContent)
.first()
.rightclick();
cy.get(tableSelector).scrollIntoView();
cy.get(tableSelector).contains(cellContent).first().rightclick();
};
const drillBy = (targetDrillByColumn: string, isLegacy = false) => {
@ -94,14 +91,16 @@ const testEchart = (
) => {
cy.get(`[data-test-viz-type='${vizType}'] canvas`).then($canvas => {
// click 'boy'
cy.wrap($canvas)
.scrollIntoView()
.trigger(
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger(
'mouseover',
drillClickCoordinates[0][0],
drillClickCoordinates[0][1],
)
.rightclick(drillClickCoordinates[0][0], drillClickCoordinates[0][1]);
);
cy.wrap($canvas).rightclick(
drillClickCoordinates[0][0],
drillClickCoordinates[0][1],
);
drillBy('state').then(intercepted => {
verifyExpectedFormData(intercepted, {
@ -139,14 +138,16 @@ const testEchart = (
// further drill
cy.get(`[data-test="drill-by-chart"] canvas`).then($canvas => {
// click 'other'
cy.wrap($canvas)
.scrollIntoView()
.trigger(
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger(
'mouseover',
drillClickCoordinates[1][0],
drillClickCoordinates[1][1],
)
.rightclick(drillClickCoordinates[1][0], drillClickCoordinates[1][1]);
);
cy.wrap($canvas).rightclick(
drillClickCoordinates[1][0],
drillClickCoordinates[1][1],
);
drillBy(furtherDrillDimension).then(intercepted => {
verifyExpectedFormData(intercepted, {
@ -609,10 +610,9 @@ describe('Drill by modal', () => {
it('Mixed Chart', () => {
cy.get('[data-test-viz-type="mixed_timeseries"] canvas').then($canvas => {
// click 'boy'
cy.wrap($canvas)
.scrollIntoView()
.trigger('mouseover', 70, 93)
.rightclick(70, 93);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger('mouseover', 70, 93);
cy.wrap($canvas).rightclick(70, 93);
drillBy('name').then(intercepted => {
const { queries } = intercepted.request.body;
@ -644,10 +644,9 @@ describe('Drill by modal', () => {
// further drill
cy.get(`[data-test="drill-by-chart"] canvas`).then($canvas => {
// click second query
cy.wrap($canvas)
.scrollIntoView()
.trigger('mouseover', 246, 114)
.rightclick(246, 114);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger('mouseover', 246, 114);
cy.wrap($canvas).rightclick(246, 114);
drillBy('ds').then(intercepted => {
const { queries } = intercepted.request.body;

View File

@ -86,46 +86,41 @@ function testTimeChart(vizType: string) {
interceptSamples();
cy.get(`[data-test-viz-type='${vizType}'] canvas`).then($canvas => {
cy.wrap($canvas)
.scrollIntoView()
.trigger('mousemove', 70, 93)
.rightclick(70, 93);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger('mousemove', 70, 93);
cy.wrap($canvas).rightclick(70, 93);
openModalFromChartContext('Drill to detail by 1965');
cy.getBySel('filter-val').should('contain', '1965');
closeModal();
cy.wrap($canvas)
.scrollIntoView()
.trigger('mousemove', 70, 93)
.rightclick(70, 93);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger('mousemove', 70, 93);
cy.wrap($canvas).rightclick(70, 93);
openModalFromChartContext('Drill to detail by boy');
cy.getBySel('filter-val').should('contain', 'boy');
closeModal();
cy.wrap($canvas)
.scrollIntoView()
.trigger('mousemove', 70, 93)
.rightclick(70, 93);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger('mousemove', 70, 93);
cy.wrap($canvas).rightclick(70, 93);
openModalFromChartContext('Drill to detail by all');
cy.getBySel('filter-val').first().should('contain', '1965');
cy.getBySel('filter-val').eq(1).should('contain', 'boy');
closeModal();
cy.wrap($canvas)
.scrollIntoView()
.trigger('mousemove', 70, 145)
.rightclick(70, 145);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger('mousemove', 70, 145);
cy.wrap($canvas).rightclick(70, 145);
openModalFromChartContext('Drill to detail by girl');
cy.getBySel('filter-val').should('contain', 'girl');
closeModal();
cy.wrap($canvas)
.scrollIntoView()
.trigger('mousemove', 70, 145)
.rightclick(70, 145);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger('mousemove', 70, 145);
cy.wrap($canvas).rightclick(70, 145);
openModalFromChartContext('Drill to detail by all');
cy.getBySel('filter-val').first().should('contain', '1965');
cy.getBySel('filter-val').eq(1).should('contain', 'girl');
@ -206,9 +201,12 @@ describe('Drill to detail modal', () => {
interceptSamples();
// opens the modal by clicking on the number on the chart
cy.get("[data-test-viz-type='big_number_total'] .header-line")
.scrollIntoView()
.rightclick();
cy.get(
"[data-test-viz-type='big_number_total'] .header-line",
).scrollIntoView();
cy.get(
"[data-test-viz-type='big_number_total'] .header-line",
).rightclick();
openModalFromChartContext('Drill to detail');
@ -221,9 +219,10 @@ describe('Drill to detail modal', () => {
interceptSamples();
// opens the modal by clicking on the number
cy.get("[data-test-viz-type='big_number'] .header-line")
.scrollIntoView()
.rightclick();
cy.get(
"[data-test-viz-type='big_number'] .header-line",
).scrollIntoView();
cy.get("[data-test-viz-type='big_number'] .header-line").rightclick();
openModalFromChartContext('Drill to detail');
@ -233,10 +232,9 @@ describe('Drill to detail modal', () => {
// opens the modal by clicking on the trendline
cy.get("[data-test-viz-type='big_number'] canvas").then($canvas => {
cy.wrap($canvas)
.scrollIntoView()
.trigger('mousemove', 1, 14)
.rightclick(1, 14);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger('mousemove', 1, 14);
cy.wrap($canvas).rightclick(1, 14);
openModalFromChartContext('Drill to detail by 1965');
@ -254,10 +252,8 @@ describe('Drill to detail modal', () => {
cy.get("[data-test-viz-type='table']").contains('boy').rightclick();
cy.wait(500);
cy.get("[data-test-viz-type='table']")
.contains('boy')
.scrollIntoView()
.rightclick();
cy.get("[data-test-viz-type='table']").contains('boy').scrollIntoView();
cy.get("[data-test-viz-type='table']").contains('boy').rightclick();
openModalFromChartContext('Drill to detail by boy');
@ -268,10 +264,8 @@ describe('Drill to detail modal', () => {
// focus on table first to trigger browser scroll
cy.get("[data-test-viz-type='table']").contains('girl').rightclick();
cy.wait(500);
cy.get("[data-test-viz-type='table']")
.scrollIntoView()
.contains('girl')
.rightclick();
cy.get("[data-test-viz-type='table']").scrollIntoView();
cy.get("[data-test-viz-type='table']").contains('girl').rightclick();
openModalFromChartContext('Drill to detail by girl');
@ -283,8 +277,8 @@ describe('Drill to detail modal', () => {
it('opens the modal with the correct filters', () => {
interceptSamples();
cy.get("[data-test-viz-type='pivot_table_v2']").scrollIntoView();
cy.get("[data-test-viz-type='pivot_table_v2']")
.scrollIntoView()
.find('[role="gridcell"]')
.first()
.rightclick();
@ -294,8 +288,8 @@ describe('Drill to detail modal', () => {
cy.getBySel('filter-val').should('contain', 'boy');
closeModal();
cy.get("[data-test-viz-type='pivot_table_v2']").scrollIntoView();
cy.get("[data-test-viz-type='pivot_table_v2']")
.scrollIntoView()
.find('[role="gridcell"]')
.first()
.rightclick();
@ -305,8 +299,8 @@ describe('Drill to detail modal', () => {
cy.getBySel('filter-val').should('contain', 'CA');
closeModal();
cy.get("[data-test-viz-type='pivot_table_v2']").scrollIntoView();
cy.get("[data-test-viz-type='pivot_table_v2']")
.scrollIntoView()
.find('[role="gridcell"]')
.eq(3)
.rightclick();
@ -316,8 +310,8 @@ describe('Drill to detail modal', () => {
cy.getBySel('filter-val').should('contain', 'girl');
closeModal();
cy.get("[data-test-viz-type='pivot_table_v2']").scrollIntoView();
cy.get("[data-test-viz-type='pivot_table_v2']")
.scrollIntoView()
.find('[role="gridcell"]')
.eq(3)
.rightclick();
@ -327,8 +321,8 @@ describe('Drill to detail modal', () => {
cy.getBySel('filter-val').should('contain', 'FL');
closeModal();
cy.get("[data-test-viz-type='pivot_table_v2']").scrollIntoView();
cy.get("[data-test-viz-type='pivot_table_v2']")
.scrollIntoView()
.find('[role="gridcell"]')
.eq(3)
.rightclick();
@ -352,26 +346,30 @@ describe('Drill to detail modal', () => {
cy.get("[data-test-viz-type='echarts_timeseries_bar'] canvas").then(
$canvas => {
cy.wrap($canvas).scrollIntoView().rightclick(70, 100);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(70, 100);
openModalFromChartContext('Drill to detail by 1965');
cy.getBySel('filter-val').should('contain', '1965');
closeModal();
cy.wrap($canvas).scrollIntoView().rightclick(70, 100);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(70, 100);
openModalFromChartContext('Drill to detail by boy');
cy.getBySel('filter-val').should('contain', 'boy');
closeModal();
cy.wrap($canvas).scrollIntoView().rightclick(70, 100);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(70, 100);
openModalFromChartContext('Drill to detail by all');
cy.getBySel('filter-val').first().should('contain', '1965');
cy.getBySel('filter-val').eq(1).should('contain', 'boy');
closeModal();
cy.wrap($canvas).scrollIntoView().rightclick(72, 200);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(72, 200);
openModalFromChartContext('Drill to detail by girl');
cy.getBySel('filter-val').should('contain', 'girl');
@ -398,13 +396,15 @@ describe('Drill to detail modal', () => {
// opens the modal by clicking on the slice of the Pie chart
cy.get("[data-test-viz-type='pie'] canvas").then($canvas => {
cy.wrap($canvas).scrollIntoView().rightclick(130, 150);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(130, 150);
openModalFromChartContext('Drill to detail by girl');
cy.getBySel('filter-val').should('contain', 'girl');
closeModal();
cy.wrap($canvas).scrollIntoView().rightclick(230, 190);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(230, 190);
openModalFromChartContext('Drill to detail by boy');
cy.getBySel('filter-val').should('contain', 'boy');
@ -417,13 +417,15 @@ describe('Drill to detail modal', () => {
interceptSamples();
cy.get("[data-test-viz-type='world_map'] svg").then($canvas => {
cy.wrap($canvas).scrollIntoView().rightclick(70, 150);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(70, 150);
openModalFromChartContext('Drill to detail by USA');
cy.getBySel('filter-val').should('contain', 'USA');
closeModal();
});
cy.get("[data-test-viz-type='world_map'] svg").then($canvas => {
cy.wrap($canvas).scrollIntoView().rightclick(200, 140);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(200, 140);
openModalFromChartContext('Drill to detail by SRB');
cy.getBySel('filter-val').should('contain', 'SRB');
});
@ -435,7 +437,8 @@ describe('Drill to detail modal', () => {
interceptSamples();
cy.get("[data-test-viz-type='dist_bar'] svg").then($canvas => {
cy.wrap($canvas).scrollIntoView().rightclick(70, 150);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(70, 150);
openModalFromChartContext('Drill to detail');
cy.getBySel('filter-val').should('not.exist');
});
@ -461,9 +464,10 @@ describe('Drill to detail modal', () => {
const canvasCenterX = canvasWidth / 3;
const canvasCenterY = (canvasHeight * 5) / 6;
cy.wrap($canvas)
.scrollIntoView()
.rightclick(canvasCenterX, canvasCenterY, { force: true });
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(canvasCenterX, canvasCenterY, {
force: true,
});
openModalFromChartContext('Drill to detail by boy');
@ -497,19 +501,17 @@ describe('Drill to detail modal', () => {
interceptSamples();
cy.get("[data-test-viz-type='box_plot'] canvas").then($canvas => {
cy.wrap($canvas)
.scrollIntoView()
.trigger('mousemove', 135, 275)
.rightclick(135, 275);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger('mousemove', 135, 275);
cy.wrap($canvas).rightclick(135, 275);
openModalFromChartContext('Drill to detail by boy');
cy.getBySel('filter-val').should('contain', 'boy');
closeModal();
cy.wrap($canvas)
.scrollIntoView()
.trigger('mousemove', 270, 280)
.rightclick(270, 280);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).trigger('mousemove', 270, 280);
cy.wrap($canvas).rightclick(270, 280);
openModalFromChartContext('Drill to detail by girl');
cy.getBySel('filter-val').should('contain', 'girl');
@ -540,13 +542,15 @@ describe('Drill to detail modal', () => {
interceptSamples();
cy.get("[data-test-viz-type='funnel'] canvas").then($canvas => {
cy.wrap($canvas).scrollIntoView().rightclick(170, 90);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(170, 90);
openModalFromChartContext('Drill to detail by boy');
cy.getBySel('filter-val').should('contain', 'boy');
closeModal();
cy.wrap($canvas).scrollIntoView().rightclick(190, 250);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(190, 250);
openModalFromChartContext('Drill to detail by girl');
cy.getBySel('filter-val').should('contain', 'girl');
@ -559,13 +563,15 @@ describe('Drill to detail modal', () => {
interceptSamples();
cy.get("[data-test-viz-type='gauge_chart'] canvas").then($canvas => {
cy.wrap($canvas).scrollIntoView().rightclick(135, 95);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(135, 95);
openModalFromChartContext('Drill to detail by boy');
cy.getBySel('filter-val').should('contain', 'boy');
closeModal();
cy.wrap($canvas).scrollIntoView().rightclick(95, 135);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(95, 135);
openModalFromChartContext('Drill to detail by girl');
cy.getBySel('filter-val').should('contain', 'girl');
@ -584,13 +590,15 @@ describe('Drill to detail modal', () => {
interceptSamples();
cy.get("[data-test-viz-type='radar'] canvas").then($canvas => {
cy.wrap($canvas).scrollIntoView().rightclick(180, 45);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(180, 45);
openModalFromChartContext('Drill to detail by boy');
cy.getBySel('filter-val').should('contain', 'boy');
closeModal();
cy.wrap($canvas).scrollIntoView().rightclick(180, 85);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(180, 85);
openModalFromChartContext('Drill to detail by girl');
cy.getBySel('filter-val').should('contain', 'girl');
@ -603,13 +611,15 @@ describe('Drill to detail modal', () => {
interceptSamples();
cy.get("[data-test-viz-type='treemap_v2'] canvas").then($canvas => {
cy.wrap($canvas).scrollIntoView().rightclick(100, 30);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(100, 30);
openModalFromChartContext('Drill to detail by boy');
cy.getBySel('filter-val').should('contain', 'boy');
closeModal();
cy.wrap($canvas).scrollIntoView().rightclick(150, 250);
cy.wrap($canvas).scrollIntoView();
cy.wrap($canvas).rightclick(150, 250);
openModalFromChartContext('Drill to detail by girl');
cy.getBySel('filter-val').should('contain', 'girl');

View File

@ -663,7 +663,8 @@ describe('Dashboard edit', () => {
});
it('should edit the title', () => {
cy.getBySel('dashboard-title-input').clear().type('Edited title');
cy.getBySel('dashboard-title-input').clear();
cy.getBySel('dashboard-title-input').type('Edited title');
applyChanges();
cy.getBySel('editable-title-input').should('have.value', 'Edited title');
});
@ -684,7 +685,8 @@ describe('Dashboard edit', () => {
});
it('should edit the title inline', () => {
cy.getBySel('editable-title-input').clear().type('Edited title{enter}');
cy.getBySel('editable-title-input').clear();
cy.getBySel('editable-title-input').type('Edited title{enter}');
cy.getBySel('header-save-button').should('be.enabled');
});
@ -747,7 +749,8 @@ describe('Dashboard edit', () => {
'Click here to learn more about [markdown formatting](https://bit.ly/1dQOfRK)',
);
cy.getBySel('dashboard-markdown-editor').click().type('Test resize');
cy.getBySel('dashboard-markdown-editor').click();
cy.getBySel('dashboard-markdown-editor').type('Test resize');
resize(
'[data-test="dashboard-markdown-editor"] .resizable-container div.resizable-container-handle--bottom + div',

View File

@ -57,9 +57,9 @@ describe('Dashboard tabs', () => {
it('should switch tabs', () => {
topLevelTabs();
cy.get('@top-level-tabs').first().click();
cy.get('@top-level-tabs')
.first()
.click()
.should('have.class', 'ant-tabs-tab-active');
cy.get('@top-level-tabs')
.last()
@ -68,9 +68,9 @@ describe('Dashboard tabs', () => {
cy.getBySel('grid-container').find('.box_plot').should('not.exist');
cy.getBySel('grid-container').find('.line').should('not.exist');
cy.get('@top-level-tabs').last().click();
cy.get('@top-level-tabs')
.last()
.click()
.should('have.class', 'ant-tabs-tab-active');
cy.get('@top-level-tabs')
.first()
@ -99,7 +99,8 @@ describe('Dashboard tabs', () => {
getChartAliasBySpec(TREEMAP).then(treemapAlias => {
// apply filter
cy.get('.Select__control').first().should('be.visible').click();
cy.get('.Select__control input[type=text]').first().focus().type('South');
cy.get('.Select__control input[type=text]').first().focus();
cy.focused().type('South');
cy.get('.Select__option').contains('South Asia').click();
cy.get('.filter button:not(:disabled)').contains('Apply').click();
@ -166,18 +167,18 @@ describe('Dashboard tabs', () => {
});
it('should update size when switch tab', () => {
cy.get('@top-level-tabs').last().click();
cy.get('@top-level-tabs')
.last()
.click()
.should('have.class', 'ant-tabs-tab-active');
expandFilterOnLeftPanel();
cy.wait(1000);
cy.get('@top-level-tabs').first().click();
cy.get('@top-level-tabs')
.first()
.click()
.should('have.class', 'ant-tabs-tab-active');
cy.wait(1000);

View File

@ -239,15 +239,11 @@ export function enterNativeFilterEditModal(waitForDataset = true) {
* @summary helper for adding new filter
************************************************************************* */
export function clickOnAddFilterInModal() {
cy.get(nativeFilters.addFilterButton.button).first().click();
return cy
.get(nativeFilters.addFilterButton.button)
.first()
.click()
.then(() => {
cy.get(nativeFilters.addFilterButton.dropdownItem)
.get(nativeFilters.addFilterButton.dropdownItem)
.contains('Filter')
.click({ force: true });
});
}
/** ************************************************************************
@ -272,14 +268,22 @@ export function fillNativeFilterForm(
cy.get(nativeFilters.modal.container)
.find(nativeFilters.filtersPanel.filterName)
.last()
.click({ scrollBehavior: false })
.clear({ force: true })
.click({ scrollBehavior: false });
cy.get(nativeFilters.modal.container)
.find(nativeFilters.filtersPanel.filterName)
.last()
.clear({ force: true });
cy.get(nativeFilters.modal.container)
.find(nativeFilters.filtersPanel.filterName)
.last()
.type(name, { scrollBehavior: false, force: true });
if (dataset) {
cy.get(nativeFilters.modal.container)
.find(nativeFilters.filtersPanel.datasetName)
.last()
.click({ force: true, scrollBehavior: false })
.click({ force: true, scrollBehavior: false });
cy.get(nativeFilters.modal.container)
.find(nativeFilters.filtersPanel.datasetName)
.type(`${dataset}`, { scrollBehavior: false });
cy.get(nativeFilters.silentLoading).should('not.exist');
cy.get(`[label="${dataset}"]`).click({ multiple: true, force: true });
@ -339,9 +343,9 @@ export function addParentFilterWithValue(index: number, value: string) {
return cy
.get(nativeFilters.filterConfigurationSections.displayedSection)
.within(() => {
cy.get('input[aria-label="Limit type"]').eq(index).click({ force: true });
cy.get('input[aria-label="Limit type"]')
.eq(index)
.click({ force: true })
.type(`${value}{enter}`, { delay: 30, force: true });
});
}

View File

@ -240,7 +240,8 @@ describe('Dashboards list', () => {
// edits in list-view
setGridMode('list');
cy.getBySel('edit-alt').eq(0).click();
cy.getBySel('dashboard-title-input').clear().type('1 - Sample dashboard');
cy.getBySel('dashboard-title-input').clear();
cy.getBySel('dashboard-title-input').type('1 - Sample dashboard');
cy.get('button:contains("Save")').click();
cy.wait('@update');
cy.getBySel('table-row').eq(0).contains('1 - Sample dashboard');

View File

@ -62,8 +62,10 @@ describe('Add database', () => {
it('show error alerts on dynamic form for bad host', () => {
// click postgres dynamic form
cy.get('.preferred > :nth-child(1)').click();
cy.get('input[name="host"]').focus().type('badhost', { force: true });
cy.get('input[name="port"]').focus().type('5432', { force: true });
cy.get('input[name="host"]').focus();
cy.focused().type('badhost', { force: true });
cy.get('input[name="port"]').focus();
cy.focused().type('5432', { force: true });
cy.get('.ant-form-item-explain-error').contains(
"The hostname provided can't be resolved",
);
@ -72,8 +74,10 @@ describe('Add database', () => {
it('show error alerts on dynamic form for bad port', () => {
// click postgres dynamic form
cy.get('.preferred > :nth-child(1)').click();
cy.get('input[name="host"]').focus().type('localhost', { force: true });
cy.get('input[name="port"]').focus().type('123', { force: true });
cy.get('input[name="host"]').focus();
cy.focused().type('localhost', { force: true });
cy.get('input[name="port"]').focus();
cy.focused().type('123', { force: true });
cy.get('input[name="database"]').focus();
cy.get('.ant-form-item-explain-error').contains('The port is closed');
});

View File

@ -41,12 +41,10 @@ describe('AdhocMetrics', () => {
cy.get('[data-test="AdhocMetricEditTitle#trigger"]').click();
cy.get('[data-test="AdhocMetricEditTitle#input"]').type(metricName);
cy.get('input[aria-label="Select column"]')
.click()
.type('num_girls{enter}');
cy.get('input[aria-label="Select aggregate options"]')
.click()
.type('sum{enter}');
cy.get('input[aria-label="Select column"]').click();
cy.get('input[aria-label="Select column"]').type('num_girls{enter}');
cy.get('input[aria-label="Select aggregate options"]').click();
cy.get('input[aria-label="Select aggregate options"]').type('sum{enter}');
cy.get('[data-test="AdhocMetricEdit#save"]').contains('Save').click();

View File

@ -35,8 +35,10 @@ describe.skip('AdhocFilters', () => {
});
cy.get('[data-test=adhoc_filters]').within(() => {
cy.get('.Select__control').scrollIntoView().click();
cy.get('input[type=text]').focus().type('name{enter}');
cy.get('.Select__control').scrollIntoView();
cy.get('.Select__control').click();
cy.get('input[type=text]').focus();
cy.focused().type('name{enter}');
cy.get("div[role='button']").first().click();
});
@ -54,9 +56,8 @@ describe.skip('AdhocFilters', () => {
it('Set simple adhoc filter', () => {
cy.get('[aria-label="Comparator option"] .Select__control').click();
cy.get('[data-test=adhoc-filter-simple-value] input[type=text]')
.focus()
.type('Jack{enter}', { delay: 20 });
cy.get('[data-test=adhoc-filter-simple-value] input[type=text]').focus();
cy.focused().type('Jack{enter}', { delay: 20 });
cy.get('[data-test="adhoc-filter-edit-popover-save-button"]').click();
@ -75,18 +76,15 @@ describe.skip('AdhocFilters', () => {
const filterType = 'name';
const filterContent = "'Amy' OR name = 'Donald'";
cy.get('[data-test=adhoc_filters] .Select__control')
.scrollIntoView()
.click();
cy.get('[data-test=adhoc_filters] .Select__control').scrollIntoView();
cy.get('[data-test=adhoc_filters] .Select__control').click();
// remove previous input
cy.get('[data-test=adhoc_filters] input[type=text]')
.focus()
.type('{backspace}');
cy.get('[data-test=adhoc_filters] input[type=text]').focus();
cy.focused().type('{backspace}');
cy.get('[data-test=adhoc_filters] input[type=text]')
.focus()
.type(`${filterType}{enter}`);
cy.get('[data-test=adhoc_filters] input[type=text]').focus();
cy.focused().type(`${filterType}{enter}`);
cy.wait('@filterValues');

View File

@ -37,9 +37,9 @@ describe('Advanced analytics', () => {
.find('input[type=search]')
.type('28 days{enter}');
cy.get('[data-test=time_compare]').find('input[type=search]').clear();
cy.get('[data-test=time_compare]')
.find('input[type=search]')
.clear()
.type('1 year{enter}');
cy.get('button[data-test="run-query-button"]').click();

View File

@ -51,9 +51,9 @@ describe('Datasource control', () => {
'[data-test="table-content-rows"] [data-test="editable-title-input"]',
)
.first()
.focus()
.clear()
.type(`${newMetricName}{enter}`);
.focus();
cy.focused().clear();
cy.focused().type(`${newMetricName}{enter}`);
cy.get('[data-test="datasource-modal-save"]').click();
cy.get('.ant-modal-confirm-btns button').contains('OK').click();
@ -101,9 +101,8 @@ describe('Color scheme control', () => {
);
cy.get('.color-scheme-tooltip').contains('Superset Colors');
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('lyftColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('lyftColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="lyftColors"]',
).should('exist');
@ -153,15 +152,12 @@ describe('Test datatable', () => {
cy.intercept(
'datasource/samples?force=false&datasource_type=table&datasource_id=*',
).as('Samples');
cy.contains('Samples')
.click()
.then(() => {
cy.contains('Samples').click();
cy.wait('@Samples');
cy.get('.ant-tabs-tab-active').contains('Samples');
cy.get('[data-test="row-count-label"]').contains('1k rows');
cy.get('.ant-empty-description').should('not.exist');
});
});
});
describe('Time range filter', () => {
@ -180,9 +176,7 @@ describe('Time range filter', () => {
cy.visitChartByParams(formData);
cy.verifySliceSuccess({ waitAlias: '@chartData' });
cy.get('[data-test=time-range-trigger]')
.click()
.then(() => {
cy.get('[data-test=time-range-trigger]').click();
cy.get('.footer').find('button').its('length').should('eq', 2);
cy.get('.ant-popover-content').within(() => {
cy.get('input[value="100 years ago"]');
@ -192,7 +186,6 @@ describe('Time range filter', () => {
cy.wait(500);
cy.get('.ant-popover').should('not.exist');
});
});
it('Common time_range params', () => {
const formData = {
@ -205,14 +198,11 @@ describe('Time range filter', () => {
cy.visitChartByParams(formData);
cy.verifySliceSuccess({ waitAlias: '@chartData' });
cy.get('[data-test=time-range-trigger]')
.click()
.then(() => {
cy.get('[data-test=time-range-trigger]').click();
cy.get('.ant-radio-group').children().its('length').should('eq', 5);
cy.get('.ant-radio-checked + span').contains('Last year');
cy.get('[data-test=cancel-button]').click();
});
});
it('Previous time_range params', () => {
const formData = {
@ -225,14 +215,11 @@ describe('Time range filter', () => {
cy.visitChartByParams(formData);
cy.verifySliceSuccess({ waitAlias: '@chartData' });
cy.get('[data-test=time-range-trigger]')
.click()
.then(() => {
cy.get('[data-test=time-range-trigger]').click();
cy.get('.ant-radio-group').children().its('length').should('eq', 3);
cy.get('.ant-radio-checked + span').contains('previous calendar month');
cy.get('[data-test=cancel-button]').click();
});
});
it('Custom time_range params', () => {
const formData = {
@ -245,9 +232,7 @@ describe('Time range filter', () => {
cy.visitChartByParams(formData);
cy.verifySliceSuccess({ waitAlias: '@chartData' });
cy.get('[data-test=time-range-trigger]')
.click()
.then(() => {
cy.get('[data-test=time-range-trigger]').click();
cy.get('[data-test=custom-frame]').then(() => {
cy.get('.ant-input-number-input-wrap > input')
.invoke('attr', 'value')
@ -255,7 +240,6 @@ describe('Time range filter', () => {
});
cy.get('[data-test=cancel-button]').click();
});
});
it('No filter time_range params', () => {
const formData = {
@ -268,11 +252,8 @@ describe('Time range filter', () => {
cy.visitChartByParams(formData);
cy.verifySliceSuccess({ waitAlias: '@chartData' });
cy.get('[data-test=time-range-trigger]')
.click()
.then(() => {
cy.get('[data-test=no-filter]');
});
cy.get('[data-test=time-range-trigger]').click();
cy.get('[data-test=no-filter]').should('exist');
cy.get('[data-test=cancel-button]').click();
});
});
@ -288,7 +269,8 @@ describe('Groupby control', () => {
.contains('Drop columns here or click')
.click();
cy.get('[id="adhoc-metric-edit-tabs-tab-simple"]').click();
cy.get('input[aria-label="Column"]').click().type('state{enter}');
cy.get('input[aria-label="Column"]').click();
cy.get('input[aria-label="Column"]').type('state{enter}');
cy.get('[data-test="ColumnEdit#save"]').contains('Save').click();
cy.get('button[data-test="run-query-button"]').click();

View File

@ -117,7 +117,9 @@ describe('Test explore links', () => {
cy.get('[data-test="query-save-button"]').click();
cy.get('[data-test="saveas-radio"]').check();
cy.get('[data-test="new-chart-name"]').click().clear().type(newChartName);
cy.get('[data-test="new-chart-name"]').click();
cy.get('[data-test="new-chart-name"]').clear();
cy.get('[data-test="new-chart-name"]').type(newChartName);
// Add a new option using the "CreatableSelect" feature
cy.get('[data-test="save-chart-modal-select-dashboard-form"]')
.find('input[aria-label="Select a dashboard"]')
@ -147,7 +149,9 @@ describe('Test explore links', () => {
cy.get('[data-test="query-save-button"]').click();
cy.get('[data-test="save-overwrite-radio"]').check();
cy.get('[data-test="new-chart-name"]').click().clear().type(newChartName);
cy.get('[data-test="new-chart-name"]').click();
cy.get('[data-test="new-chart-name"]').clear();
cy.get('[data-test="new-chart-name"]').type(newChartName);
// This time around, typing the same dashboard name
// will select the existing one
cy.get('[data-test="save-chart-modal-select-dashboard-form"]')

View File

@ -108,9 +108,8 @@ describe('Visualization > Area', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('supersetColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('supersetColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="supersetColors"]',
).should('exist');

View File

@ -51,9 +51,8 @@ describe('Visualization > Box Plot', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('supersetColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('supersetColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="supersetColors"]',
).should('exist');

View File

@ -70,12 +70,11 @@ describe('Visualization > Bubble', () => {
},
],
});
cy.get('[data-test="chart-container"]')
.should('be.visible')
.within(() => {
cy.get('[data-test="chart-container"]').should('be.visible');
cy.get('[data-test="chart-container"]').within(() => {
cy.get('svg').find('.nv-point-clips circle').should('have.length', 8);
})
.then(nodeList => {
});
cy.get('[data-test="chart-container"]').then(nodeList => {
// Check that all circles have same color.
const color = nodeList[0].getAttribute('fill');
const circles = Array.prototype.slice.call(nodeList);
@ -89,9 +88,8 @@ describe('Visualization > Bubble', () => {
cy.visitChartByParams(BUBBLE_FORM_DATA);
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('supersetColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('supersetColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="supersetColors"]',
).should('exist');

View File

@ -91,9 +91,8 @@ describe('Visualization > Compare', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('supersetColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('supersetColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="supersetColors"]',
).should('exist');

View File

@ -81,9 +81,8 @@ describe('Visualization > Distribution bar chart', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('bnbColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('bnbColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="bnbColors"]',
).should('exist');

View File

@ -66,9 +66,8 @@ describe('Visualization > Gauge', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('bnbColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('bnbColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="bnbColors"]',
).should('exist');

View File

@ -82,9 +82,8 @@ describe('Visualization > Graph', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('bnbColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('bnbColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="bnbColors"]',
).should('exist');

View File

@ -89,9 +89,8 @@ describe('Visualization > Histogram', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('supersetColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('supersetColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="supersetColors"]',
).should('exist');

View File

@ -51,10 +51,10 @@ describe('Visualization > Line', () => {
// Title edit for saved metrics is disabled - switch to Simple
cy.get('[id="adhoc-metric-edit-tabs-tab-SIMPLE"]').click();
cy.get('input[aria-label="Select column"]').click().type('num{enter}');
cy.get('input[aria-label="Select aggregate options"]')
.click()
.type('sum{enter}');
cy.get('input[aria-label="Select column"]').click();
cy.get('input[aria-label="Select column"]').type('num{enter}');
cy.get('input[aria-label="Select aggregate options"]').click();
cy.get('input[aria-label="Select aggregate options"]').type('sum{enter}');
cy.get('[data-test="AdhocMetricEdit#save"]').contains('Save').click();
cy.get('[data-test="metrics-header"]').contains('Metrics');
@ -77,9 +77,8 @@ describe('Visualization > Line', () => {
it('should allow type to search color schemes and apply the scheme', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('bnbColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('bnbColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="bnbColors"]',
).should('exist');

View File

@ -73,9 +73,8 @@ describe('Visualization > Pie', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('supersetColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('supersetColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="supersetColors"]',
).should('exist');

View File

@ -78,9 +78,8 @@ describe('Visualization > Sankey', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('bnbColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('bnbColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="bnbColors"]',
).should('exist');

View File

@ -88,9 +88,8 @@ describe('Visualization > Sunburst', () => {
cy.get('#controlSections-tab-display').click();
cy.get('.Control[data-test="color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="color_scheme"] input[type="search"]')
.focus()
.type('supersetColors{enter}');
cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus();
cy.focused().type('supersetColors{enter}');
cy.get(
'.Control[data-test="color_scheme"] .ant-select-selection-item [data-test="supersetColors"]',
).should('exist');

View File

@ -126,7 +126,8 @@ describe('Visualization > Table', () => {
// should handle frontend sorting correctly
cy.get('.chart-container th').contains('name').click();
cy.get('.chart-container td:nth-child(2):eq(0)').contains('Adam');
cy.get('.chart-container th').contains('ds').click().click();
cy.get('.chart-container th').contains('ds').click();
cy.get('.chart-container th').contains('ds').click();
cy.get('.chart-container td:nth-child(1):eq(0)').contains('2008');
});

View File

@ -84,9 +84,10 @@ describe('Visualization > World Map', () => {
verify(WORLD_MAP_FORM_DATA);
cy.get('.Control[data-test="linear_color_scheme"]').scrollIntoView();
cy.get('.Control[data-test="linear_color_scheme"] input[type="search"]')
.focus()
.type('greens{enter}');
cy.get(
'.Control[data-test="linear_color_scheme"] input[type="search"]',
).focus();
cy.focused().type('greens{enter}');
cy.get(
'.Control[data-test="linear_color_scheme"] .ant-select-selection-item [data-test="greens"]',
).should('exist');

View File

@ -39,14 +39,12 @@ describe('SqlLab query panel', () => {
}).as('mockSQLResponse');
cy.get('.TableSelector .Select:eq(0)').click();
cy.get('.TableSelector .Select:eq(0) input[type=text]')
.focus()
.type('{enter}');
cy.get('.TableSelector .Select:eq(0) input[type=text]').focus();
cy.focused().type('{enter}');
cy.get('#brace-editor textarea')
.focus()
.clear()
.type(`{selectall}{backspace}SELECT 1`);
cy.get('#brace-editor textarea').focus();
cy.focused().clear();
cy.focused().type(`{selectall}{backspace}SELECT 1`);
cy.get('#js-sql-toolbar button:eq(0)').eq(0).click();
@ -92,11 +90,12 @@ describe('SqlLab query panel', () => {
let initialResultsTable: HTMLElement | null = null;
let savedQueryResultsTable = null;
cy.get('#brace-editor textarea')
.clear({ force: true })
.type(`{selectall}{backspace}${query}`, { force: true })
.focus() // focus => blur is required for updating the query that is to be saved
.blur();
cy.get('#brace-editor textarea').clear({ force: true });
cy.get('#brace-editor textarea').type(`{selectall}{backspace}${query}`, {
force: true,
});
cy.get('#brace-editor textarea').focus(); // focus => blur is required for updating the query that is to be saved
cy.focused().blur();
// ctrl + r also runs query
cy.get('#brace-editor textarea').type('{ctrl}r', { force: true });
@ -113,9 +112,8 @@ describe('SqlLab query panel', () => {
.click();
// Enter name + save into modal
cy.get('.modal-sm input')
.clear({ force: true })
.type(`{selectall}{backspace}${savedQueryTitle}`, {
cy.get('.modal-sm input').clear({ force: true });
cy.get('.modal-sm input').type(`{selectall}{backspace}${savedQueryTitle}`, {
force: true,
});
@ -159,10 +157,9 @@ describe('SqlLab query panel', () => {
const query = 'SELECT gender, name FROM birth_names';
cy.get('.ace_text-input')
.focus()
.clear({ force: true })
.type(`{selectall}{backspace}${query}`, { force: true });
cy.get('.ace_text-input').focus();
cy.focused().clear({ force: true });
cy.focused().type(`{selectall}{backspace}${query}`, { force: true });
cy.get('.sql-toolbar button').contains('Run').click();
cy.wait('@queryFinished');

View File

@ -106,8 +106,12 @@ export function drag(selector: string, content: string | number | RegExp) {
to(target: string | Cypress.Chainable) {
cy.get('.dragdroppable')
.contains(selector, content)
.trigger('mousedown', { which: 1, force: true })
.trigger('dragstart', { dataTransfer, force: true })
.trigger('mousedown', { which: 1, force: true });
cy.get('.dragdroppable')
.contains(selector, content)
.trigger('dragstart', { dataTransfer, force: true });
cy.get('.dragdroppable')
.contains(selector, content)
.trigger('drag', { force: true });
(typeof target === 'string' ? cy.get(target) : target)
@ -122,10 +126,14 @@ export function drag(selector: string, content: string | number | RegExp) {
export function resize(selector: string) {
return {
to(cordX: number, cordY: number) {
cy.get(selector)
.trigger('mousedown', { which: 1, force: true })
.trigger('mousemove', { which: 1, cordX, cordY, force: true })
.trigger('mouseup', { which: 1, force: true });
cy.get(selector).trigger('mousedown', { which: 1, force: true });
cy.get(selector).trigger('mousemove', {
which: 1,
cordX,
cordY,
force: true,
});
cy.get(selector).trigger('mouseup', { which: 1, force: true });
},
};
}

View File

@ -23,7 +23,7 @@
"devDependencies": {
"@types/querystringify": "^2.0.0",
"cypress": "^10.11.0",
"eslint-plugin-cypress": "^2.12.1"
"eslint-plugin-cypress": "^3.5.0"
}
},
"node_modules/@ampproject/remapping": {
@ -5377,15 +5377,42 @@
}
},
"node_modules/eslint-plugin-cypress": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz",
"integrity": "sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==",
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-3.5.0.tgz",
"integrity": "sha512-JZQ6XnBTNI8h1B9M7wJSFzc48SYbh7VMMKaNTQOFa3BQlnmXPrVc4PKen8R+fpv6VleiPeej6VxloGb42zdRvw==",
"dev": true,
"dependencies": {
"globals": "^11.12.0"
"globals": "^13.20.0"
},
"peerDependencies": {
"eslint": ">= 3.2.1"
"eslint": ">=7"
}
},
"node_modules/eslint-plugin-cypress/node_modules/globals": {
"version": "13.24.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint-plugin-cypress/node_modules/type-fest": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint-scope": {
@ -14656,12 +14683,29 @@
}
},
"eslint-plugin-cypress": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz",
"integrity": "sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==",
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-3.5.0.tgz",
"integrity": "sha512-JZQ6XnBTNI8h1B9M7wJSFzc48SYbh7VMMKaNTQOFa3BQlnmXPrVc4PKen8R+fpv6VleiPeej6VxloGb42zdRvw==",
"dev": true,
"requires": {
"globals": "^11.12.0"
"globals": "^13.20.0"
},
"dependencies": {
"globals": {
"version": "13.24.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"requires": {
"type-fest": "^0.20.2"
}
},
"type-fest": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true
}
}
},
"eslint-scope": {

View File

@ -30,6 +30,6 @@
"devDependencies": {
"@types/querystringify": "^2.0.0",
"cypress": "^10.11.0",
"eslint-plugin-cypress": "^2.12.1"
"eslint-plugin-cypress": "^3.5.0"
}
}

View File

@ -228,7 +228,7 @@
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^7.2.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-cypress": "^2.11.2",
"eslint-plugin-cypress": "^3.5.0",
"eslint-plugin-file-progress": "^1.4.0",
"eslint-plugin-import": "^2.24.2",
"eslint-plugin-jest": "^27.8.0",
@ -23168,14 +23168,42 @@
"license": "MIT"
},
"node_modules/eslint-plugin-cypress": {
"version": "2.11.2",
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-3.5.0.tgz",
"integrity": "sha512-JZQ6XnBTNI8h1B9M7wJSFzc48SYbh7VMMKaNTQOFa3BQlnmXPrVc4PKen8R+fpv6VleiPeej6VxloGb42zdRvw==",
"dev": true,
"license": "MIT",
"dependencies": {
"globals": "^11.12.0"
"globals": "^13.20.0"
},
"peerDependencies": {
"eslint": ">= 3.2.1"
"eslint": ">=7"
}
},
"node_modules/eslint-plugin-cypress/node_modules/globals": {
"version": "13.24.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint-plugin-cypress/node_modules/type-fest": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/eslint-plugin-file-progress": {
@ -74088,10 +74116,29 @@
}
},
"eslint-plugin-cypress": {
"version": "2.11.2",
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-3.5.0.tgz",
"integrity": "sha512-JZQ6XnBTNI8h1B9M7wJSFzc48SYbh7VMMKaNTQOFa3BQlnmXPrVc4PKen8R+fpv6VleiPeej6VxloGb42zdRvw==",
"dev": true,
"requires": {
"globals": "^11.12.0"
"globals": "^13.20.0"
},
"dependencies": {
"globals": {
"version": "13.24.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
"requires": {
"type-fest": "^0.20.2"
}
},
"type-fest": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true
}
}
},
"eslint-plugin-file-progress": {

View File

@ -294,7 +294,7 @@
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^7.2.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-cypress": "^2.11.2",
"eslint-plugin-cypress": "^3.5.0",
"eslint-plugin-file-progress": "^1.4.0",
"eslint-plugin-import": "^2.24.2",
"eslint-plugin-jest": "^27.8.0",