Split large (flow-tests) spec file into individual spec file per test suite (#3297)

* split flow tests spec file
---------

Co-authored-by: ryanrosello-og <ry@zoo.dev>
This commit is contained in:
ryanrosello-og
2024-08-07 19:27:32 +10:00
committed by GitHub
parent 3f082c8222
commit f875efab1b
19 changed files with 8671 additions and 8472 deletions

View File

@ -1,4 +1,10 @@
import { expect, Page, Download } from '@playwright/test'
import {
expect,
Page,
Download,
TestInfo,
BrowserContext,
} from '@playwright/test'
import { EngineCommand } from 'lang/std/artifactGraph'
import os from 'os'
import fsp from 'fs/promises'
@ -7,6 +13,10 @@ import { PNG } from 'pngjs'
import { Protocol } from 'playwright-core/types/protocol'
import type { Models } from '@kittycad/lib'
import { APP_NAME } from 'lib/constants'
import waitOn from 'wait-on'
import { secrets } from './secrets'
import { TEST_SETTINGS_KEY, TEST_SETTINGS } from './storageStates'
import * as TOML from '@iarna/toml'
type TestColor = [number, number, number]
export const TEST_COLORS = {
@ -15,6 +25,16 @@ export const TEST_COLORS = {
BLUE: [0, 0, 255] as TestColor,
} as const
export const PERSIST_MODELING_CONTEXT = 'persistModelingContext'
export const deg = (Math.PI * 2) / 360
export const commonPoints = {
startAt: '[7.19, -9.7]',
num1: 7.25,
num2: 14.44,
}
async function waitForPageLoadWithRetry(page: Page) {
await expect(async () => {
await page.goto('/')
@ -563,3 +583,46 @@ export const doExport = async (
* Gets the appropriate modifier key for the platform.
*/
export const metaModifier = os.platform() === 'darwin' ? 'Meta' : 'Control'
export async function tearDown(page: Page, testInfo: TestInfo) {
if (testInfo.status === 'skipped') return
if (testInfo.status === 'failed') return
const u = await getUtils(page)
// Kill the network so shutdown happens properly
await u.emulateNetworkConditions({
offline: true,
// values of 0 remove any active throttling. crbug.com/456324#c9
latency: 0,
downloadThroughput: -1,
uploadThroughput: -1,
})
// It seems it's best to give the browser about 3s to close things
// It's not super reliable but we have no real other choice for now
await page.waitForTimeout(3000)
}
export async function setup(context: BrowserContext, page: Page) {
// wait for Vite preview server to be up
await waitOn({
resources: ['tcp:3000'],
timeout: 5000,
})
await context.addInitScript(
async ({ token, settingsKey, settings }) => {
localStorage.setItem('TOKEN_PERSIST_KEY', token)
localStorage.setItem('persistCode', ``)
localStorage.setItem(settingsKey, settings)
localStorage.setItem('playwright', 'true')
},
{
token: secrets.token,
settingsKey: TEST_SETTINGS_KEY,
settings: TOML.stringify({ settings: TEST_SETTINGS }),
}
)
// kill animations, speeds up tests and reduced flakiness
await page.emulateMedia({ reducedMotion: 'reduce' })
}