多维表格
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

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' });
});
});