Clean up clone tests to new style so they actually run (#12032) (#12109)

* Clean up clone tests to new style so they actually run

* Use new retry service

* Use correct case with the dashboard copy name
This commit is contained in:
Stacey Gammon 2017-06-01 14:07:49 -04:00 committed by GitHub
parent 408cd593ea
commit 2c772409ab
2 changed files with 69 additions and 65 deletions

View file

@ -1,75 +1,78 @@
import expect from 'expect.js';
import { bdd } from '../../../support';
import PageObjects from '../../../support/page_objects';
export default function ({ getService, getPageObjects }) {
const retry = getService('retry');
const PageObjects = getPageObjects(['dashboard', 'header', 'common']);
bdd.describe('dashboard save', function describeIndexTests() {
const dashboardName = 'Dashboard Clone Test';
const clonedDashboardName = dashboardName + ' copy';
describe('dashboard save', function describeIndexTests() {
const dashboardName = 'Dashboard Clone Test';
const clonedDashboardName = dashboardName + ' Copy';
bdd.before(async function () {
return PageObjects.dashboard.initTests();
});
before(async function () {
return PageObjects.dashboard.initTests();
});
bdd.it('Clone saves a copy', async function () {
await PageObjects.dashboard.clickNewDashboard();
await PageObjects.dashboard.addVisualizations(PageObjects.dashboard.getTestVisualizationNames());
await PageObjects.dashboard.enterDashboardTitleAndClickSave(dashboardName);
it('Clone saves a copy', async function () {
await PageObjects.dashboard.clickNewDashboard();
await PageObjects.dashboard.addVisualizations(PageObjects.dashboard.getTestVisualizationNames());
await PageObjects.dashboard.enterDashboardTitleAndClickSave(dashboardName);
await PageObjects.dashboard.clickClone();
await PageObjects.dashboard.clickClone();
await PageObjects.dashboard.confirmClone();
const countOfDashboards = await PageObjects.dashboard.getDashboardCountWithName(clonedDashboardName);
expect(countOfDashboards).to.equal(1);
});
const countOfDashboards = await PageObjects.dashboard.getDashboardCountWithName(clonedDashboardName);
expect(countOfDashboards).to.equal(1);
});
bdd.it('the copy should have all the same visualizations', async function () {
await PageObjects.dashboard.loadSavedDashboard(clonedDashboardName);
return PageObjects.common.try(async function () {
const panelTitles = await PageObjects.dashboard.getPanelTitles();
expect(panelTitles).to.eql(PageObjects.dashboard.getTestVisualizationNames());
it('the copy should have all the same visualizations', async function () {
await PageObjects.dashboard.loadSavedDashboard(clonedDashboardName);
await retry.try(async () => {
const panelTitles = await PageObjects.dashboard.getPanelTitles();
expect(panelTitles).to.eql(PageObjects.dashboard.getTestVisualizationNames());
});
});
it('clone warns on duplicate name', async function () {
await PageObjects.dashboard.loadSavedDashboard(dashboardName);
await PageObjects.dashboard.clickClone();
await PageObjects.dashboard.confirmClone();
const isConfirmOpen = await PageObjects.common.isConfirmModalOpen();
expect(isConfirmOpen).to.equal(true);
});
it('preserves the original title on cancel', async function () {
await PageObjects.common.clickCancelOnModal();
await PageObjects.dashboard.confirmClone();
// Should see the same confirmation if the title is the same.
const isConfirmOpen = await PageObjects.common.isConfirmModalOpen();
expect(isConfirmOpen).to.equal(true);
});
it('and doesn\'t save', async() => {
await PageObjects.common.clickCancelOnModal();
await PageObjects.dashboard.cancelClone();
const countOfDashboards = await PageObjects.dashboard.getDashboardCountWithName(dashboardName);
expect(countOfDashboards).to.equal(1);
});
it('Clones on confirm duplicate title warning', async function () {
await PageObjects.dashboard.loadSavedDashboard(dashboardName);
await PageObjects.dashboard.clickClone();
await PageObjects.dashboard.confirmClone();
await PageObjects.common.clickConfirmOnModal();
// This is important since saving a new dashboard will cause a refresh of the page. We have to
// wait till it finishes reloading or it might reload the url after simulating the
// dashboard landing page click.
await PageObjects.header.waitUntilLoadingHasFinished();
const countOfDashboards =
await PageObjects.dashboard.getDashboardCountWithName(dashboardName + ' Copy');
expect(countOfDashboards).to.equal(2);
});
});
bdd.it('clone warns on duplicate name', async function() {
await PageObjects.dashboard.loadSavedDashboard(dashboardName);
await PageObjects.dashboard.clickClone();
await PageObjects.dashboard.confirmClone();
const isConfirmOpen = await PageObjects.common.isConfirmModalOpen();
expect(isConfirmOpen).to.equal(true);
});
bdd.it('preserves the original title on cancel', async function() {
await PageObjects.common.clickCancelOnModal();
await PageObjects.dashboard.confirmClone();
// Should see the same confirmation if the title is the same.
const isConfirmOpen = await PageObjects.common.isConfirmModalOpen();
expect(isConfirmOpen).to.equal(true);
});
bdd.it('and doesn\'t save', async () => {
await PageObjects.common.clickCancelOnModal();
await PageObjects.dashboard.cancelClone();
const countOfDashboards = await PageObjects.dashboard.getDashboardCountWithName(dashboardName);
expect(countOfDashboards).to.equal(1);
});
bdd.it('Clones on confirm duplicate title warning', async function() {
await PageObjects.dashboard.loadSavedDashboard(dashboardName);
await PageObjects.dashboard.clickClone();
await PageObjects.dashboard.confirmClone();
await PageObjects.common.clickConfirmOnModal();
// This is important since saving a new dashboard will cause a refresh of the page. We have to
// wait till it finishes reloading or it might reload the url after simulating the
// dashboard landing page click.
await PageObjects.header.waitUntilLoadingHasFinished();
const countOfDashboards =
await PageObjects.dashboard.getDashboardCountWithName(dashboardName + ' copy');
expect(countOfDashboards).to.equal(2);
});
});
}

View file

@ -9,5 +9,6 @@ export default function ({ getService, loadTestFile }) {
loadTestFile(require.resolve('./_dashboard_save'));
loadTestFile(require.resolve('./_dashboard_time'));
loadTestFile(require.resolve('./_dashboard_listing'));
loadTestFile(require.resolve('./_dashboard_clone'));
});
}