mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
223 lines
8.6 KiB
223 lines
8.6 KiB
import { test } from '@playwright/test'; |
|
import { BaseType, ProjectTypes } from 'nocodb-sdk'; |
|
import { DashboardPage } from '../../pages/Dashboard'; |
|
import setup, { NcContext } from '../../setup'; |
|
|
|
test.describe('Create docs base and verify docs UI', () => { |
|
let dashboard: DashboardPage; |
|
let context: NcContext; |
|
let base: BaseType; |
|
|
|
test.beforeEach(async ({ page }) => { |
|
context = await setup({ page, baseType: ProjectTypes.DOCUMENTATION }); |
|
base = context.base; |
|
dashboard = new DashboardPage(page, context.base); |
|
}); |
|
|
|
test('Update title page of root and child page and verify', async ({ page }) => { |
|
const openedPage = dashboard.docs.openedPage; |
|
// Page update of root page |
|
await dashboard.sidebar.docsSidebar.createPage({ baseTitle: base.title as any, title: 'root-page' }); |
|
|
|
await dashboard.sidebar.docsSidebar.verifyPageInSidebar({ |
|
title: 'root-page', |
|
baseTitle: base.title as any, |
|
}); |
|
|
|
await page.reload(); |
|
|
|
await dashboard.sidebar.docsSidebar.verifyPageInSidebar({ |
|
title: 'root-page', |
|
baseTitle: base.title as any, |
|
}); |
|
|
|
await openedPage.verifyTitle({ title: 'root-page' }); |
|
await openedPage.verifyBreadcrumb({ pages: [{ title: 'root-page' }] }); |
|
|
|
// Page update of child page |
|
await dashboard.sidebar.docsSidebar.createChildPage({ |
|
parentTitle: 'root-page', |
|
baseTitle: base.title as any, |
|
title: 'child-page', |
|
}); |
|
|
|
await dashboard.sidebar.docsSidebar.verifyPageInSidebar({ |
|
title: 'child-page', |
|
baseTitle: base.title as any, |
|
level: 1, |
|
}); |
|
|
|
await page.reload(); |
|
|
|
await page.waitForTimeout(1500); |
|
|
|
await openedPage.verifyTitle({ title: 'child-page' }); |
|
await openedPage.verifyBreadcrumb({ pages: [{ title: 'root-page' }, { title: 'child-page' }] }); |
|
|
|
await dashboard.sidebar.docsSidebar.verifyPageInSidebar({ |
|
title: 'child-page', |
|
baseTitle: base.title as any, |
|
level: 1, |
|
}); |
|
|
|
// Verify that page title doesnt break when a new page is created, an existing page is opened and title is changed and new page is opened again and the title is updated there as well |
|
await dashboard.sidebar.docsSidebar.createChildPage({ |
|
parentTitle: 'root-page', |
|
baseTitle: base.title as any, |
|
}); |
|
|
|
await dashboard.sidebar.docsSidebar.openPage({ |
|
title: 'child-page', |
|
baseTitle: base.title as any, |
|
}); |
|
await dashboard.docs.openedPage.fillTitle({ title: 'child-page-1' }); |
|
await dashboard.sidebar.docsSidebar.verifyPageInSidebar({ |
|
title: 'child-page-1', |
|
baseTitle: base.title as any, |
|
level: 1, |
|
}); |
|
await openedPage.verifyTitle({ title: 'child-page-1' }); |
|
await openedPage.verifyBreadcrumb({ pages: [{ title: 'root-page' }, { title: 'child-page-1' }] }); |
|
|
|
await dashboard.sidebar.docsSidebar.openPage({ title: 'Page', baseTitle: base.title as any }); |
|
await dashboard.docs.openedPage.fillTitle({ title: 'child-page-2' }); |
|
await openedPage.verifyTitle({ title: 'child-page-2' }); |
|
await openedPage.verifyBreadcrumb({ pages: [{ title: 'root-page' }, { title: 'child-page-2' }] }); |
|
|
|
await dashboard.sidebar.docsSidebar.verifyPageInSidebar({ |
|
title: 'child-page-2', |
|
baseTitle: base.title as any, |
|
level: 1, |
|
}); |
|
}); |
|
|
|
test('Update emoji and content of newly created root page and child page', async ({ page }) => { |
|
const openedPage = dashboard.docs.openedPage; |
|
// root page |
|
await dashboard.sidebar.docsSidebar.createPage({ baseTitle: base.title as any, title: 'root-page' }); |
|
await dashboard.docs.openedPage.verifyOpenedPageVisible(); |
|
|
|
await dashboard.sidebar.docsSidebar.selectEmoji({ |
|
emoji: 'hot-dog', |
|
baseTitle: base.title as any, |
|
title: 'root-page', |
|
}); |
|
await dashboard.sidebar.docsSidebar.verifyEmoji({ |
|
emoji: 'hot-dog', |
|
baseTitle: base.title as any, |
|
title: 'root-page', |
|
}); |
|
await dashboard.docs.openedPage.verifyTitleEmoji({ emoji: 'hot-dog' }); |
|
await openedPage.verifyBreadcrumb({ pages: [{ title: 'root-page', emoji: 'hot-dog' }] }); |
|
|
|
await dashboard.docs.openedPage.selectEmoji({ emoji: 'rolling-on-the-floor-laughing' }); |
|
await dashboard.docs.openedPage.verifyTitleEmoji({ emoji: 'rolling-on-the-floor-laughing' }); |
|
await dashboard.sidebar.docsSidebar.verifyEmoji({ |
|
emoji: 'rolling-on-the-floor-laughing', |
|
baseTitle: base.title as any, |
|
title: 'root-page', |
|
}); |
|
await openedPage.verifyBreadcrumb({ pages: [{ title: 'root-page', emoji: 'rolling-on-the-floor-laughing' }] }); |
|
|
|
await dashboard.docs.openedPage.fillTitle({ title: 'root-page-1' }); |
|
await dashboard.docs.openedPage.tiptap.fillContent({ content: 'root-page-1-content' }); |
|
await dashboard.docs.openedPage.tiptap.verifyContent({ content: 'root-page-1-content' }); |
|
|
|
await openedPage.verifyBreadcrumb({ pages: [{ title: 'root-page-1', emoji: 'rolling-on-the-floor-laughing' }] }); |
|
await dashboard.sidebar.docsSidebar.verifyPageInSidebar({ |
|
title: 'root-page-1', |
|
baseTitle: base.title as any, |
|
}); |
|
|
|
// child page |
|
await dashboard.sidebar.docsSidebar.createChildPage({ |
|
parentTitle: 'root-page-1', |
|
baseTitle: base.title as any, |
|
title: 'child-page', |
|
}); |
|
|
|
await dashboard.docs.openedPage.fillTitle({ title: 'child-page-1' }); |
|
await dashboard.docs.openedPage.tiptap.fillContent({ content: 'child-page-1-content' }); |
|
await dashboard.docs.openedPage.tiptap.verifyContent({ content: 'child-page-1-content' }); |
|
await openedPage.verifyBreadcrumb({ |
|
pages: [{ title: 'root-page-1', emoji: 'rolling-on-the-floor-laughing' }, { title: 'child-page-1' }], |
|
}); |
|
|
|
await dashboard.sidebar.docsSidebar.selectEmoji({ |
|
emoji: 'hot-dog', |
|
baseTitle: base.title as any, |
|
title: 'child-page-1', |
|
}); |
|
await dashboard.sidebar.docsSidebar.verifyEmoji({ |
|
emoji: 'hot-dog', |
|
baseTitle: base.title as any, |
|
title: 'child-page-1', |
|
}); |
|
await dashboard.docs.openedPage.verifyTitleEmoji({ emoji: 'hot-dog' }); |
|
await openedPage.verifyBreadcrumb({ |
|
pages: [ |
|
{ title: 'root-page-1', emoji: 'rolling-on-the-floor-laughing' }, |
|
{ title: 'child-page-1', emoji: 'hot-dog' }, |
|
], |
|
}); |
|
|
|
await dashboard.docs.openedPage.selectEmoji({ emoji: 'rolling-on-the-floor-laughing' }); |
|
await dashboard.docs.openedPage.verifyTitleEmoji({ emoji: 'rolling-on-the-floor-laughing' }); |
|
await dashboard.sidebar.docsSidebar.verifyEmoji({ |
|
emoji: 'rolling-on-the-floor-laughing', |
|
baseTitle: base.title as any, |
|
title: 'child-page-1', |
|
}); |
|
await openedPage.verifyBreadcrumb({ |
|
pages: [ |
|
{ title: 'root-page-1', emoji: 'rolling-on-the-floor-laughing' }, |
|
{ title: 'child-page-1', emoji: 'rolling-on-the-floor-laughing' }, |
|
], |
|
}); |
|
|
|
await dashboard.sidebar.docsSidebar.verifyPageInSidebar({ |
|
title: 'child-page-1', |
|
baseTitle: base.title as any, |
|
level: 1, |
|
emoji: 'rolling-on-the-floor-laughing', |
|
}); |
|
|
|
await dashboard.sidebar.docsSidebar.openPage({ |
|
baseTitle: base.title as any, |
|
title: 'root-page-1', |
|
}); |
|
await dashboard.docs.openedPage.tiptap.verifyContent({ content: 'root-page-1-content' }); |
|
await dashboard.docs.openedPage.tiptap.clearContent(); |
|
await dashboard.docs.openedPage.tiptap.fillContent({ content: 'new-root-page-1-content' }); |
|
await dashboard.docs.openedPage.tiptap.verifyContent({ content: 'new-root-page-1-content' }); |
|
|
|
await dashboard.sidebar.docsSidebar.openPage({ |
|
baseTitle: base.title as any, |
|
title: 'child-page-1', |
|
}); |
|
// TODO: Child page content is not updated in this case, only on playwright |
|
// await dashboard.docs.openedPage.tiptap.verifyContent({ content: 'child-page-1-content' }); |
|
await dashboard.docs.openedPage.tiptap.clearContent(); |
|
await dashboard.docs.openedPage.tiptap.fillContent({ content: 'new-child-page-1-content' }); |
|
await dashboard.docs.openedPage.tiptap.verifyContent({ content: 'new-child-page-1-content' }); |
|
|
|
await page.reload(); |
|
|
|
await openedPage.waitForRender(); |
|
await dashboard.docs.openedPage.tiptap.verifyContent({ content: 'new-child-page-1-content' }); |
|
await dashboard.sidebar.docsSidebar.verifyPageInSidebar({ |
|
title: 'child-page-1', |
|
baseTitle: base.title as any, |
|
level: 1, |
|
emoji: 'rolling-on-the-floor-laughing', |
|
}); |
|
await openedPage.verifyBreadcrumb({ |
|
pages: [ |
|
{ title: 'root-page-1', emoji: 'rolling-on-the-floor-laughing' }, |
|
{ title: 'child-page-1', emoji: 'rolling-on-the-floor-laughing' }, |
|
], |
|
}); |
|
await openedPage.verifyTitle({ title: 'child-page-1' }); |
|
await openedPage.verifyTitleEmoji({ emoji: 'rolling-on-the-floor-laughing' }); |
|
}); |
|
});
|
|
|