* chore: new lexical int tests and working test structure * chore: more int tests, and better lexical collection structure * fix(richtext-lexical): Blocks: unnecessary saving node value when initially opening a document
62 lines
2.4 KiB
TypeScript
62 lines
2.4 KiB
TypeScript
import type { Page } from '@playwright/test'
|
|
|
|
import { expect, test } from '@playwright/test'
|
|
|
|
import payload from '../../packages/payload/src'
|
|
import { AdminUrlUtil } from '../helpers/adminUrlUtil'
|
|
import { initPayloadE2E } from '../helpers/configHelpers'
|
|
import { RESTClient } from '../helpers/rest'
|
|
import { clearAndSeedEverything } from './seed'
|
|
|
|
const { beforeAll, describe, beforeEach } = test
|
|
|
|
let client: RESTClient
|
|
let page: Page
|
|
let serverURL: string
|
|
|
|
async function navigateToRichTextFields() {
|
|
const url: AdminUrlUtil = new AdminUrlUtil(serverURL, 'rich-text-fields')
|
|
await page.goto(url.list)
|
|
await page.locator('.row-1 .cell-title a').click()
|
|
}
|
|
async function navigateToLexicalFields() {
|
|
const url: AdminUrlUtil = new AdminUrlUtil(serverURL, 'lexical-fields')
|
|
await page.goto(url.list)
|
|
await page.locator('.row-1 .cell-title a').click()
|
|
}
|
|
|
|
describe('lexical', () => {
|
|
beforeAll(async ({ browser }) => {
|
|
const config = await initPayloadE2E(__dirname)
|
|
serverURL = config.serverURL
|
|
client = new RESTClient(null, { serverURL, defaultSlug: 'rich-text-fields' })
|
|
await client.login()
|
|
|
|
const context = await browser.newContext()
|
|
page = await context.newPage()
|
|
})
|
|
beforeEach(async () => {
|
|
await clearAndSeedEverything(payload)
|
|
await client.logout()
|
|
client = new RESTClient(null, { serverURL, defaultSlug: 'rich-text-fields' })
|
|
await client.login()
|
|
})
|
|
|
|
test('should not warn about unsaved changes when navigating to lexical editor with blocks node and then leaving the page without actually changing anything', async () => {
|
|
// This used to be an issue in the past, due to the node.setFields function in the blocks node being called unnecessarily when it's initialized after opening the document
|
|
// Other than the annoying unsaved changed prompt, this can also cause unnecessary auto-saves, when drafts & autosave is enabled
|
|
|
|
await navigateToLexicalFields()
|
|
|
|
await expect(
|
|
page.locator('.rich-text-lexical').nth(1).locator('.lexical-block').first(),
|
|
).toBeVisible()
|
|
|
|
// Navigate to some different page, away from the current document
|
|
await page.locator('.app-header__step-nav').first().locator('a').first().click()
|
|
|
|
// Make sure .leave-without-saving__content (the "Leave without saving") is not visible
|
|
await expect(page.locator('.leave-without-saving__content').first()).not.toBeVisible()
|
|
})
|
|
})
|