chore: add e2e tests for creating first user (#6027)

This commit is contained in:
Paul
2024-04-25 10:57:50 -03:00
committed by GitHub
parent 036bcd6b8f
commit bdaa9e831d
3 changed files with 64 additions and 35 deletions

View File

@@ -216,6 +216,7 @@ export default buildConfigWithDefaults({
},
],
onInit: async (payload) => {
if (process.env.SKIP_ON_INIT !== 'true') {
await payload.create({
collection: 'users',
data: {
@@ -240,5 +241,6 @@ export default buildConfigWithDefaults({
enableAPIKey: true,
},
})
}
},
})

View File

@@ -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<Config>
/**
* 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<Config>({ 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,
},
})
})

View File

@@ -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')