[Dashboard] Store view mode in local storage (#166523)

Moves the Dashboard view mode from session storage to local storage. This means that users will only need to enter edit mode **once** if they are an editor, and any subsequent Dashboards they open will already be in edit mode.
This commit is contained in:
Devon Thomson 2023-09-29 19:46:18 -04:00 committed by GitHub
parent 7e32fc8432
commit 8ffa8d8ee4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 223 additions and 110 deletions

View file

@ -38,6 +38,24 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
await kibanaServer.savedObjects.cleanStandardList();
});
it('existing dashboard opens in last used view mode', async function () {
await PageObjects.dashboard.gotoDashboardLandingPage();
await PageObjects.dashboard.loadSavedDashboard(dashboardName);
expect(await PageObjects.dashboard.getIsInViewMode()).to.equal(true);
await PageObjects.dashboard.switchToEditMode();
await PageObjects.dashboard.gotoDashboardLandingPage();
await PageObjects.dashboard.loadSavedDashboard(dashboardName);
expect(await PageObjects.dashboard.getIsInViewMode()).to.equal(false);
await PageObjects.dashboard.gotoDashboardLandingPage();
await PageObjects.dashboard.loadSavedDashboard('few panels');
expect(await PageObjects.dashboard.getIsInViewMode()).to.equal(false);
await PageObjects.dashboard.clickCancelOutOfEditMode();
});
it('create new dashboard opens in edit mode', async function () {
await PageObjects.dashboard.gotoDashboardLandingPage();
await PageObjects.dashboard.clickNewDashboard();
@ -45,14 +63,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
expect(isInViewMode).to.be(false);
});
it('existing dashboard opens in view mode', async function () {
await PageObjects.dashboard.gotoDashboardLandingPage();
await PageObjects.dashboard.loadSavedDashboard(dashboardName);
const inViewMode = await PageObjects.dashboard.getIsInViewMode();
expect(inViewMode).to.equal(true);
});
describe('save', function () {
it('auto exits out of edit mode', async function () {
await PageObjects.dashboard.gotoDashboardEditMode(dashboardName);

View file

@ -182,11 +182,11 @@ export class DashboardPageObject extends FtrService {
public async expectOnDashboard(expectedTitle: string) {
await this.retry.waitFor(
`last breadcrumb to have dashboard title: ${expectedTitle}`,
`last breadcrumb to have dashboard title: ${expectedTitle} OR Editing ${expectedTitle}`,
async () => {
const actualTitle = await this.globalNav.getLastBreadcrumb();
this.log.debug(`Expected dashboard title ${expectedTitle}, actual: ${actualTitle}`);
return actualTitle === expectedTitle;
return actualTitle === expectedTitle || actualTitle === `Editing ${expectedTitle}`;
}
);
}