refactor(tests): ⚡️ Add msw and mock authentication
This commit is contained in:
@ -1,10 +1,5 @@
|
||||
import { chromium, FullConfig, Page } from '@playwright/test'
|
||||
import { existsSync } from 'fs'
|
||||
import {
|
||||
getSignedInUser,
|
||||
setupDatabase,
|
||||
teardownDatabase,
|
||||
} from './services/database'
|
||||
import { FullConfig } from '@playwright/test'
|
||||
import { setupDatabase, teardownDatabase } from './services/database'
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
require('dotenv').config({ path: '.env' })
|
||||
@ -12,43 +7,8 @@ require('dotenv').config({ path: '.env' })
|
||||
async function globalSetup(config: FullConfig) {
|
||||
const { baseURL } = config.projects[0].use
|
||||
if (!baseURL) throw new Error('baseURL is missing')
|
||||
if (!process.env.GITHUB_EMAIL || !process.env.GITHUB_PASSWORD)
|
||||
throw new Error(
|
||||
'GITHUB_EMAIL or GITHUB_PASSWORD are missing in the environment. They are required to log in.'
|
||||
)
|
||||
|
||||
await teardownDatabase()
|
||||
|
||||
const signedInUser = await getSignedInUser(process.env.GITHUB_EMAIL as string)
|
||||
if (!signedInUser || !existsSync('./playwright/authenticatedState.json')) {
|
||||
const browser = await chromium.launch()
|
||||
const page = await browser.newPage()
|
||||
await signIn(page)
|
||||
await page.context().storageState({
|
||||
path: './playwright/authenticatedState.json',
|
||||
})
|
||||
}
|
||||
|
||||
await setupDatabase(process.env.GITHUB_EMAIL as string)
|
||||
}
|
||||
|
||||
const signIn = async (page: Page) => {
|
||||
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 as string)
|
||||
await page.fill(
|
||||
'input[name="password"]',
|
||||
process.env.GITHUB_PASSWORD as string
|
||||
)
|
||||
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`,
|
||||
})
|
||||
await setupDatabase()
|
||||
}
|
||||
|
||||
export default globalSetup
|
||||
|
Reference in New Issue
Block a user