mirror of
https://github.com/stablyai/orca.git
synced 2026-09-29 16:02:50 +00:00
test: retain PR 19376 visual evidence in isolated CI run
This commit is contained in:
@@ -3,6 +3,9 @@ name: E2E
|
||||
run-name: E2E ${{ inputs.ref || github.ref }}
|
||||
|
||||
# Why: checkout + artifact upload only; callers can only further restrict.
|
||||
env:
|
||||
ORCA_BACKGROUND_LAUNCH: "1"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
@@ -177,12 +180,12 @@ jobs:
|
||||
# them as an artifact makes post-mortem debugging on CI possible without
|
||||
# re-running locally.
|
||||
- name: Upload Playwright traces
|
||||
if: failure()
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: playwright-traces-${{ matrix.shard_name }}
|
||||
path: test-results/
|
||||
retention-days: 7
|
||||
retention-days: 30
|
||||
if-no-files-found: ignore
|
||||
|
||||
changed-e2e:
|
||||
@@ -254,12 +257,12 @@ jobs:
|
||||
pnpm run test:e2e "${TEST_FILES[@]}" --workers=1 "${E2E_PROJECT_ARGS[@]}"
|
||||
|
||||
- name: Upload Playwright traces
|
||||
if: failure()
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: playwright-traces-changed
|
||||
path: test-results/
|
||||
retention-days: 7
|
||||
retention-days: 30
|
||||
if-no-files-found: ignore
|
||||
|
||||
ssh-docker-watcher-isolation:
|
||||
@@ -349,12 +352,12 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Upload watcher isolation traces
|
||||
if: failure()
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: playwright-traces-ssh-docker-watcher-isolation
|
||||
path: e2e-traces/
|
||||
retention-days: 7
|
||||
retention-days: 30
|
||||
if-no-files-found: ignore
|
||||
|
||||
ssh-browser-network-route:
|
||||
@@ -434,9 +437,9 @@ jobs:
|
||||
ORCA_E2E_FORWARD_APP_LOGS: '1'
|
||||
run: xvfb-run --auto-servernum bash .github/scripts/e2e-with-window-manager.sh pnpm exec playwright test --config tests/playwright.config.ts tests/e2e/ssh-localhost.spec.ts --project=electron-headless --workers=1
|
||||
- uses: actions/upload-artifact@v7
|
||||
if: failure()
|
||||
if: always()
|
||||
with:
|
||||
name: localhost-ssh-traces
|
||||
path: test-results/
|
||||
retention-days: 7
|
||||
retention-days: 30
|
||||
if-no-files-found: ignore
|
||||
|
||||
@@ -110,6 +110,7 @@ for (const workspace of ['git', 'folder', 'paired remote'] as const) {
|
||||
body: await page.screenshot(),
|
||||
contentType: 'image/png'
|
||||
})
|
||||
await page.screenshot({ path: testInfo.outputPath('reopened-editor.png') })
|
||||
await closeActiveEditorTab(page, filePath)
|
||||
} finally {
|
||||
await client?.dispose()
|
||||
|
||||
@@ -42,6 +42,7 @@ test.describe('Markdown nested toggle regression', () => {
|
||||
await waitForRichMarkdownEditor(orcaPage)
|
||||
|
||||
await expectEditableNestedToggles(orcaPage)
|
||||
await orcaPage.screenshot({ path: testInfo.outputPath('verified-editor.png') })
|
||||
} finally {
|
||||
await cleanupMarkdownFixture(filePath)
|
||||
}
|
||||
@@ -83,6 +84,7 @@ test.describe('Markdown nested toggle regression', () => {
|
||||
await waitForRichMarkdownEditor(orcaPage)
|
||||
await expectEditableNestedToggles(orcaPage)
|
||||
await expectSentinelInsideNestedToggle(orcaPage, sentinel)
|
||||
await orcaPage.screenshot({ path: testInfo.outputPath('verified-editor.png') })
|
||||
} finally {
|
||||
await cleanupMarkdownFixture(filePath)
|
||||
}
|
||||
@@ -106,6 +108,7 @@ test.describe('Markdown nested toggle regression', () => {
|
||||
await waitForRichMarkdownEditor(orcaPage)
|
||||
|
||||
await expectPassthroughFallback(orcaPage)
|
||||
await orcaPage.screenshot({ path: testInfo.outputPath('verified-editor.png') })
|
||||
} finally {
|
||||
await cleanupMarkdownFixture(filePath)
|
||||
}
|
||||
|
||||
@@ -84,7 +84,8 @@ test.describe('Markdown ordered-list exit regression', () => {
|
||||
|
||||
await expectSentinelParagraphOutsideOrderedList(orcaPage, row.sentinel)
|
||||
await expectSerializedDraftOutsideOrderedList(orcaPage, draftKey, row.sentinel)
|
||||
} finally {
|
||||
await orcaPage.screenshot({ path: testInfo.outputPath('verified-editor.png') })
|
||||
} finally {
|
||||
await cleanupMarkdownFixture(filePath)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -169,6 +169,7 @@ test.describe('Markdown prose reflow', () => {
|
||||
expect(metrics.sourceLineCount).toBe(4)
|
||||
expect(metrics.whiteSpace).toBe('normal')
|
||||
expect(metrics.lineCount).toBeLessThan(metrics.sourceLineCount)
|
||||
await orcaPage.screenshot({ path: testInfo.outputPath('verified-editor.png') })
|
||||
} finally {
|
||||
await cleanupMarkdownFixture(filePath)
|
||||
}
|
||||
@@ -192,6 +193,7 @@ test.describe('Markdown prose reflow', () => {
|
||||
expect(metrics.sourceLineCount).toBe(4)
|
||||
expect(metrics.whiteSpace).toBe('normal')
|
||||
expect(metrics.lineCount).toBeLessThan(metrics.sourceLineCount)
|
||||
await orcaPage.screenshot({ path: testInfo.outputPath('verified-editor.png') })
|
||||
} finally {
|
||||
await cleanupMarkdownFixture(filePath)
|
||||
}
|
||||
@@ -217,6 +219,7 @@ test.describe('Markdown prose reflow', () => {
|
||||
expect(metrics.sourceLineCount).toBe(4)
|
||||
expect(metrics.whiteSpace).toBe('normal')
|
||||
expect(metrics.lineCount).toBeLessThan(metrics.sourceLineCount)
|
||||
await orcaPage.screenshot({ path: testInfo.outputPath('verified-editor.png') })
|
||||
} finally {
|
||||
await cleanupMarkdownFixture(filePath)
|
||||
}
|
||||
@@ -239,6 +242,7 @@ test.describe('Markdown prose reflow', () => {
|
||||
expect(metrics.sourceLineCount).toBe(4)
|
||||
expect(metrics.whiteSpace).toBe('normal')
|
||||
expect(metrics.lineCount).toBeLessThan(metrics.sourceLineCount)
|
||||
await orcaPage.screenshot({ path: testInfo.outputPath('verified-editor.png') })
|
||||
} finally {
|
||||
await cleanupMarkdownFixture(filePath)
|
||||
}
|
||||
|
||||
@@ -101,6 +101,7 @@ test.describe('Rich markdown link bubble stacking', () => {
|
||||
expect(overlap.bubbleRight).toBeGreaterThan(overlap.explorerLeft)
|
||||
expect(overlap.overlapWidth).toBeGreaterThan(8)
|
||||
expect(overlap.topElementIsBubble).toBe(true)
|
||||
await orcaPage.screenshot({ path: testInfo.outputPath('link-bubble-over-explorer.png') })
|
||||
|
||||
// The Edit action exposes its label via aria-label (a shadcn Button +
|
||||
// Radix tooltip), not a title attribute, so match by accessible name.
|
||||
@@ -115,6 +116,7 @@ test.describe('Rich markdown link bubble stacking', () => {
|
||||
await expect(input).toBeFocused()
|
||||
await input.fill(`https://example.com/${'long-url-segment/'.repeat(30)}`)
|
||||
await input.press('End')
|
||||
await orcaPage.screenshot({ path: testInfo.outputPath('link-bubble-edit.png') })
|
||||
expect(await input.evaluate((element) => element.scrollLeft)).toBeGreaterThan(0)
|
||||
await expect(input).toBeFocused()
|
||||
await expect(bubble).toBeVisible()
|
||||
|
||||
Reference in New Issue
Block a user