chore(e2e): 👷 Fix e2e pipeline
This commit is contained in:
@ -1,31 +1,43 @@
|
||||
import { chromium, FullConfig, Page } from '@playwright/test'
|
||||
import { setupDatabase, teardownDatabase, user } from './services/database'
|
||||
import { setupDatabase, teardownDatabase } from './services/database'
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
require('dotenv').config({ path: '.env' })
|
||||
|
||||
async function globalSetup(config: FullConfig) {
|
||||
const { baseURL } = config.projects[0].use
|
||||
if (!baseURL) throw new Error('baseURL is missing')
|
||||
|
||||
await teardownDatabase()
|
||||
await setupDatabase()
|
||||
|
||||
// Skip auth if debugging
|
||||
if (process.env.PWDEBUG === '1') return
|
||||
|
||||
const browser = await chromium.launch()
|
||||
const page = await browser.newPage()
|
||||
await signIn(page, user.email)
|
||||
await signIn(page)
|
||||
await page.context().storageState({
|
||||
path: './playwright/authenticatedState.json',
|
||||
})
|
||||
|
||||
await setupDatabase(process.env.GITHUB_EMAIL as string)
|
||||
}
|
||||
|
||||
const signIn = async (page: Page, email: string) => {
|
||||
await page.goto('http://localhost:3000/api/auth/signin')
|
||||
await page.fill('[placeholder="credentials\\@email\\.com"]', email)
|
||||
await Promise.all([
|
||||
page.waitForNavigation({ url: 'http://localhost:3000/typebots' }),
|
||||
page.press('[placeholder="credentials\\@email\\.com"]', 'Enter'),
|
||||
])
|
||||
const signIn = async (page: Page) => {
|
||||
if (!process.env.GITHUB_EMAIL || !process.env.GITHUB_PASSWORD)
|
||||
throw new Error(
|
||||
'GITHUB_USERNAME or GITHUB_PASSWORD are missing in the environment. They are required to log in.'
|
||||
)
|
||||
await page.goto(`${process.env.PLAYWRIGHT_BUILDER_TEST_BASE_URL}/signin`)
|
||||
await page.click('text=Continue with GitHub')
|
||||
await page.fill('input[name="login"]', process.env.GITHUB_EMAIL)
|
||||
await page.fill('input[name="password"]', process.env.GITHUB_PASSWORD)
|
||||
await page.press('input[name="password"]', 'Enter')
|
||||
try {
|
||||
await page.locator('text=Authorize baptisteArno').click({ timeout: 3000 })
|
||||
} catch {
|
||||
return
|
||||
}
|
||||
await page.waitForNavigation({
|
||||
url: `${process.env.PLAYWRIGHT_BUILDER_TEST_BASE_URL}/typebots`,
|
||||
})
|
||||
}
|
||||
|
||||
export default globalSetup
|
||||
|
Reference in New Issue
Block a user