Add e2e coverage for Combined mode (#259)

* Refactor test functions to later enable cilcks

* Add not-so-clean way to get the combined snap

* Add linux combine snap

* Refactor, add darwin snapshots

* Add linux snapshots

* Remove darwin snapshots

* Disable tracking of darwin snapshots

* WIP reenable failing test

* WIP tests
This commit is contained in:
Pierre Jacquier
2023-06-28 05:23:51 -04:00
committed by GitHub
parent e6daf99921
commit 558639d6cb
16 changed files with 40 additions and 18 deletions

1
.gitignore vendored
View File

@ -26,5 +26,6 @@ yarn-error.log*
/test-results/
/playwright-report/
/playwright/.cache/
/tests/extension.spec.ts-snapshots/*darwin*
.env*

View File

@ -252,6 +252,7 @@ export function CadDiff({ before, after }: FileDiff): React.ReactElement {
2-up
</TabNav.Link>
<TabNav.Link
className="kittycad-combined-button"
selected={showCombined}
onClick={() => setShowCombined(true)}
sx={{ cursor: 'pointer' }}

View File

@ -1,4 +1,4 @@
import { Page } from '@playwright/test'
import { ElementHandle, Page } from '@playwright/test'
import { test, expect } from './fixtures'
test('popup page', async ({ page, extensionId }) => {
@ -18,11 +18,7 @@ test('authorized popup page', async ({
await expect(page.locator('button')).toHaveCount(2)
})
async function getFirstDiffScreenshot(
page: Page,
url: string,
extension: string
) {
async function getFirstDiffElement(page: Page, url: string, extension: string) {
page.on('console', msg => console.log(msg.text()))
await page.goto(url)
@ -36,10 +32,16 @@ async function getFirstDiffScreenshot(
`.js-file[data-file-type=".${extension}"]`
)
await page.waitForTimeout(1000) // making sure the element fully settled in
return await element.screenshot()
return element
}
async function getBlobPreviewScreenshot(page: Page, url: string) {
async function enableCombined(page: Page, element: ElementHandle) {
const button = await element.$('.kittycad-combined-button')
await button.click()
await page.waitForTimeout(1000)
}
async function getBlobPreviewElement(page: Page, url: string) {
page.on('console', msg => console.log(msg.text()))
await page.goto(url)
@ -49,45 +51,62 @@ async function getBlobPreviewScreenshot(page: Page, url: string) {
// screenshot the file diff with its toolbar
const element = await page.waitForSelector('.kittycad-injected-file')
await page.waitForTimeout(1000) // making sure the element fully settled in
return await element.screenshot()
return element
}
test('pull request diff with an .obj file', async ({
test('pull request diff with a modified .obj file', async ({
page,
authorizedBackground,
}) => {
const url = 'https://github.com/KittyCAD/diff-samples/pull/2/files'
const screenshot = await getFirstDiffScreenshot(page, url, 'obj')
const element = await getFirstDiffElement(page, url, 'obj')
const screenshot = await element.screenshot()
expect(screenshot).toMatchSnapshot()
await enableCombined(page, element)
const screenshot2 = await element.screenshot()
expect(screenshot2).toMatchSnapshot()
})
test('pull request diff with a .step file', async ({
test('pull request diff with a modified .step file', async ({
page,
authorizedBackground,
}) => {
const url = 'https://github.com/KittyCAD/diff-samples/pull/2/files'
const screenshot = await getFirstDiffScreenshot(page, url, 'step')
const element = await getFirstDiffElement(page, url, 'step')
const screenshot = await element.screenshot()
expect(screenshot).toMatchSnapshot()
// TODO: understand why this one makes the CI fail (guess: page crashes, low resources?)
// await enableCombined(page, element)
// const screenshot2 = await element.screenshot()
// expect(screenshot2).toMatchSnapshot()
})
test('commit diff with a .step file', async ({
test('commit diff with an added .step file', async ({
page,
authorizedBackground,
}) => {
const url =
'https://github.com/KittyCAD/diff-samples/commit/fd9eec79f0464833686ea6b5b34ea07145e32734'
const screenshot = await getFirstDiffScreenshot(page, url, 'step')
const element = await getFirstDiffElement(page, url, 'step')
const screenshot = await element.screenshot()
expect(screenshot).toMatchSnapshot()
})
test('commit diff with a .dae file as LFS', async ({
test('commit diff with a modified .dae file as LFS', async ({
page,
authorizedBackground,
}) => {
const url =
'https://github.com/KittyCAD/diff-samples/commit/b009cfd6dd1eb2d0c3ec0d31a21360766ad084e4'
const screenshot = await getFirstDiffScreenshot(page, url, 'dae')
const element = await getFirstDiffElement(page, url, 'dae')
const screenshot = await element.screenshot()
expect(screenshot).toMatchSnapshot()
await enableCombined(page, element)
const screenshot2 = await element.screenshot()
expect(screenshot2).toMatchSnapshot()
})
test('blob preview with an .obj file', async ({
@ -96,7 +115,8 @@ test('blob preview with an .obj file', async ({
}) => {
const url =
'https://github.com/KittyCAD/diff-samples/blob/fd9eec79f0464833686ea6b5b34ea07145e32734/models/box.obj'
const screenshot = await getBlobPreviewScreenshot(page, url)
const element = await getBlobPreviewElement(page, url)
const screenshot = await element.screenshot()
expect(screenshot).toMatchSnapshot()
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB