chore: updates e2e tests for plugin-nested-docs and plugin-seo (#5434)

* test: removes unnecessary lines

* fix: do not error if row field has no fields (#5433)

* ci(deps): update turborepo

* ci: release script updates

* chore: lint all json/yml, add to lint-staged

* chore: lint mdx in lint-staged

* chore: enable e2e live preview (#5444)

* chore: update workflow file

---------

Co-authored-by: Alessio Gravili <70709113+AlessioGr@users.noreply.github.com>
Co-authored-by: Elliot DeNolf <denolfe@gmail.com>
Co-authored-by: Paul <paul@payloadcms.com>
This commit is contained in:
Jessica Chowdhury
2024-04-01 15:01:05 +01:00
committed by GitHub
parent 92ec0a5b1d
commit ece7d92e57
9 changed files with 266 additions and 146 deletions

View File

@@ -2,7 +2,6 @@ import type { Page } from '@playwright/test'
import { expect, test } from '@playwright/test'
import path from 'path'
import payload from 'payload'
import { fileURLToPath } from 'url'
import type { Page as PayloadPage } from './payload-types.js'
@@ -11,6 +10,7 @@ import { initPageConsoleErrorCatch } from '../helpers.js'
import { AdminUrlUtil } from '../helpers/adminUrlUtil.js'
import { initPayloadE2E } from '../helpers/initPayloadE2E.js'
import config from './config.js'
const filename = fileURLToPath(import.meta.url)
const dirname = path.dirname(filename)
@@ -22,22 +22,32 @@ let parentId: string
let draftChildId: string
let childId: string
async function createPage(data: Partial<PayloadPage>): Promise<PayloadPage> {
return payload.create({
collection: 'pages',
data,
}) as unknown as Promise<PayloadPage>
}
describe('Nested Docs Plugin', () => {
beforeAll(async ({ browser }) => {
const { serverURL } = await initPayloadE2E({ config, dirname })
const { serverURL, payload } = await initPayloadE2E({ config, dirname })
url = new AdminUrlUtil(serverURL, 'pages')
const context = await browser.newContext()
page = await context.newPage()
initPageConsoleErrorCatch(page)
async function createPage({
slug,
title = 'Title page',
parent,
_status = 'published',
}: Partial<PayloadPage>): Promise<PayloadPage> {
return payload.create({
collection: 'pages',
data: {
title,
slug,
_status,
parent,
},
}) as unknown as Promise<PayloadPage>
}
const parentPage = await createPage({ slug: 'parent-slug' })
parentId = parentPage.id
@@ -70,41 +80,58 @@ describe('Nested Docs Plugin', () => {
let slug = page.locator(slugClass).nth(0)
await expect(slug).toHaveValue('child-slug')
const parentSlugInChildClass = '#field-breadcrumbs__0__url'
// TODO: remove when error states are fixed
const apiTabButton = page.locator('text=API')
await apiTabButton.click()
const breadcrumbs = page.locator('text=/parent-slug').first()
await expect(breadcrumbs).toBeVisible()
const parentSlugInChild = page.locator(parentSlugInChildClass).nth(0)
await expect(parentSlugInChild).toHaveValue('/parent-slug')
// TODO: add back once error states are fixed
// const parentSlugInChildClass = '#field-breadcrumbs__0__url'
// const parentSlugInChild = page.locator(parentSlugInChildClass).nth(0)
// await expect(parentSlugInChild).toHaveValue('/parent-slug')
await page.goto(url.edit(parentId))
slug = page.locator(slugClass).nth(0)
await slug.fill('updated-parent-slug')
await expect(slug).toHaveValue('updated-parent-slug')
await page.locator(publishButtonClass).nth(0).click()
await page.waitForTimeout(1500)
await page.goto(url.edit(childId))
await expect(parentSlugInChild).toHaveValue('/updated-parent-slug')
// TODO: remove when error states are fixed
await apiTabButton.click()
const updatedBreadcrumbs = page.locator('text=/updated-parent-slug').first()
await expect(updatedBreadcrumbs).toBeVisible()
// TODO: add back once error states are fixed
// await expect(parentSlugInChild).toHaveValue('/updated-parent-slug')
})
test('Draft parent slug does not update child', async () => {
await page.goto(url.edit(draftChildId))
const parentSlugInChildClass = '#field-breadcrumbs__0__url'
// TODO: remove when error states are fixed
const apiTabButton = page.locator('text=API')
await apiTabButton.click()
const breadcrumbs = page.locator('text=/parent-slug-draft').first()
await expect(breadcrumbs).toBeVisible()
const parentSlugInChild = page.locator(parentSlugInChildClass).nth(0)
await expect(parentSlugInChild).toHaveValue('/parent-slug-draft')
// TODO: add back once error states are fixed
// const parentSlugInChildClass = '#field-breadcrumbs__0__url'
// const parentSlugInChild = page.locator(parentSlugInChildClass).nth(0)
// await expect(parentSlugInChild).toHaveValue('/parent-slug-draft')
await page.goto(url.edit(parentId))
await page.locator(slugClass).nth(0).fill('parent-updated-draft')
await page.locator(draftButtonClass).nth(0).click()
await page.waitForTimeout(1500)
await page.goto(url.edit(draftChildId))
await expect(parentSlugInChild).toHaveValue('/parent-slug-draft')
await apiTabButton.click()
const updatedBreadcrumbs = page.locator('text=/parent-slug-draft').first()
await expect(updatedBreadcrumbs).toBeVisible()
// TODO: add back when error states are fixed
// await expect(parentSlugInChild).toHaveValue('/parent-slug-draft')
})
})
})

View File

@@ -0,0 +1,9 @@
export interface Page {
id: string
parent?: string
slug: string
_status?: 'draft' | 'published'
title?: string
updatedAt: string
createdAt: string
}