2
0

refactor(tests): ️ Add msw and mock authentication

This commit is contained in:
Baptiste Arnaud
2022-02-12 10:12:43 +01:00
parent d19b26e7de
commit b1f54b77c6
15 changed files with 789 additions and 129 deletions

View File

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