From bdaa9e831d6b214d583f146bcdc202bfe0ab7ebf Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 25 Apr 2024 10:57:50 -0300 Subject: [PATCH] chore: add e2e tests for creating first user (#6027) --- test/auth/config.ts | 46 +++++++++++++------------- test/auth/e2e.spec.ts | 49 +++++++++++++++++++++------- test/fields-relationship/e2e.spec.ts | 4 ++- 3 files changed, 64 insertions(+), 35 deletions(-) diff --git a/test/auth/config.ts b/test/auth/config.ts index 42dba2fc0f..15bed3b8a6 100644 --- a/test/auth/config.ts +++ b/test/auth/config.ts @@ -216,29 +216,31 @@ export default buildConfigWithDefaults({ }, ], onInit: async (payload) => { - await payload.create({ - collection: 'users', - data: { - custom: 'Hello, world!', - email: devUser.email, - password: devUser.password, - }, - }) + if (process.env.SKIP_ON_INIT !== 'true') { + await payload.create({ + collection: 'users', + data: { + custom: 'Hello, world!', + email: devUser.email, + password: devUser.password, + }, + }) - await payload.create({ - collection: 'api-keys', - data: { - apiKey: uuid(), - enableAPIKey: true, - }, - }) + await payload.create({ + collection: 'api-keys', + data: { + apiKey: uuid(), + enableAPIKey: true, + }, + }) - await payload.create({ - collection: 'api-keys', - data: { - apiKey: uuid(), - enableAPIKey: true, - }, - }) + await payload.create({ + collection: 'api-keys', + data: { + apiKey: uuid(), + enableAPIKey: true, + }, + }) + } }, }) diff --git a/test/auth/e2e.spec.ts b/test/auth/e2e.spec.ts index 2fcf0fd185..546a1ff68b 100644 --- a/test/auth/e2e.spec.ts +++ b/test/auth/e2e.spec.ts @@ -1,14 +1,16 @@ import type { Page } from '@playwright/test' import { expect, test } from '@playwright/test' +import { devUser } from 'credentials.js' import path from 'path' +import { wait } from 'payload/utilities' import { fileURLToPath } from 'url' import { v4 as uuid } from 'uuid' import type { PayloadTestSDK } from '../helpers/sdk/index.js' import type { Config } from './payload-types.js' -import { initPageConsoleErrorCatch, login, saveDocAndAssert } from '../helpers.js' +import { initPageConsoleErrorCatch, saveDocAndAssert } from '../helpers.js' import { AdminUrlUtil } from '../helpers/adminUrlUtil.js' import { initPayloadE2ENoConfig } from '../helpers/initPayloadE2ENoConfig.js' import { POLL_TOPASS_TIMEOUT } from '../playwright.config.js' @@ -19,25 +21,37 @@ const dirname = path.dirname(filename) let payload: PayloadTestSDK -/** - * TODO: Auth - * create first user - * unlock - * log out - */ - const { beforeAll, describe } = test const headers = { 'Content-Type': 'application/json', } +const createFirstUser = async ({ page, serverURL }: { page: Page; serverURL: string }) => { + await page.goto(serverURL + '/admin/create-first-user') + await page.locator('#field-email').fill(devUser.email) + await page.locator('#field-password').fill(devUser.password) + await page.locator('#field-confirm-password').fill(devUser.password) + await page.locator('#field-custom').fill('Hello, world!') + + await wait(500) + + await page.locator('.form-submit > button').click() + + await expect + .poll(() => page.url(), { timeout: POLL_TOPASS_TIMEOUT }) + .not.toContain('create-first-user') +} + describe('auth', () => { let page: Page let url: AdminUrlUtil let serverURL: string let apiURL: string + // Allows for testing create-first-user + process.env.SKIP_ON_INIT = 'true' + beforeAll(async ({ browser }) => { ;({ payload, serverURL } = await initPayloadE2ENoConfig({ dirname })) apiURL = `${serverURL}/api` @@ -47,11 +61,22 @@ describe('auth', () => { page = await context.newPage() initPageConsoleErrorCatch(page) - //await delayNetwork({ context, page, delay: 'Slow 4G' }) + await createFirstUser({ page, serverURL }) - await login({ - page, - serverURL, + await payload.create({ + collection: 'api-keys', + data: { + apiKey: uuid(), + enableAPIKey: true, + }, + }) + + await payload.create({ + collection: 'api-keys', + data: { + apiKey: uuid(), + enableAPIKey: true, + }, }) }) diff --git a/test/fields-relationship/e2e.spec.ts b/test/fields-relationship/e2e.spec.ts index 6260c934f5..7e111ecc97 100644 --- a/test/fields-relationship/e2e.spec.ts +++ b/test/fields-relationship/e2e.spec.ts @@ -383,9 +383,11 @@ describe('fields - relationship', () => { }) await page.goto(url.create) - + // wait for relationship options to load + const relationFilterOptionsReq = page.waitForResponse(/api\/relation-filter-true/) // select relationshipMany field that relies on siblingData field above await page.locator('#field-relationshipManyFiltered .rs__control').click() + await relationFilterOptionsReq const options = page.locator('#field-relationshipManyFiltered .rs__menu') await expect(options).toContainText('truth')