From cd4ccdfa29d52fc02e14f423db1cbb0d473f491b Mon Sep 17 00:00:00 2001 From: Fernando Garcia Llorente Date: Wed, 7 Dec 2022 16:45:33 +0000 Subject: [PATCH] feat: allow options in automatic screenshots (#19143) Closes #9983 Allowing Automatic Screenshots in `PlaywrightTestConfig` to have `fullPage` & `omitBackground` as optional parameters. --- docs/src/test-api/class-testoptions.md | 5 ++- packages/playwright-test/src/index.ts | 12 +++++--- packages/playwright-test/types/test.d.ts | 5 +-- tests/page/pageTestApi.ts | 3 +- .../screenshot-grid-fullpage.png | Bin 0 -> 75066 bytes .../playwright.artifacts.spec.ts | 29 ++++++++++++++++++ utils/generate_types/overrides-test.d.ts | 5 +-- 7 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 tests/playwright-test/__screenshots__/playwright.artifacts.spec.ts/screenshot-grid-fullpage.png diff --git a/docs/src/test-api/class-testoptions.md b/docs/src/test-api/class-testoptions.md index 7b022addb1..7eb4a57cdc 100644 --- a/docs/src/test-api/class-testoptions.md +++ b/docs/src/test-api/class-testoptions.md @@ -190,7 +190,10 @@ Learn more about [various timeouts](../test-timeouts.md). ## property: TestOptions.screenshot * since: v1.10 -- type: <[Screenshot]<"off"|"on"|"only-on-failure">> +- type: <[Object]|[ScreenshotMode]<"off"|"on"||"only-on-failure">> + - `mode` <[ScreenshotMode]<"off"|"on"|"only-on-failure">> Automatic screenshot mode. + - `fullPage` ?<[boolean]> When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Defaults to `false`. + - `omitBackground` ?<[boolean]> Hides default white background and allows capturing screenshots with transparency. Not applicable to `jpeg` images. Defaults to `false`. Whether to automatically capture a screenshot after each test. Defaults to `'off'`. * `'off'`: Do not capture screenshots. diff --git a/packages/playwright-test/src/index.ts b/packages/playwright-test/src/index.ts index 76fbee4e3c..8416ba556b 100644 --- a/packages/playwright-test/src/index.ts +++ b/packages/playwright-test/src/index.ts @@ -255,6 +255,8 @@ const playwrightFixtures: Fixtures = ({ if (debugMode()) testInfo.setTimeout(0); + const screenshotOptions = typeof screenshot !== 'string' ? { fullPage: screenshot.fullPage, omitBackground: screenshot.omitBackground } : undefined; + const screenshotMode = typeof screenshot === 'string' ? screenshot : screenshot.mode; const traceMode = normalizeTraceMode(trace); const defaultTraceOptions = { screenshots: true, snapshots: true, sources: true }; const traceOptions = typeof trace === 'string' ? defaultTraceOptions : { ...defaultTraceOptions, ...trace, mode: undefined }; @@ -342,7 +344,7 @@ const playwrightFixtures: Fixtures = ({ temporaryScreenshots.push(screenshotPath); // Pass caret=initial to avoid any evaluations that might slow down the screenshot // and let the page modify itself from the problematic state it had at the moment of failure. - await page.screenshot({ timeout: 5000, path: screenshotPath, caret: 'initial' }).catch(() => {}); + await page.screenshot({ ...screenshotOptions, timeout: 5000, path: screenshotPath, caret: 'initial' }).catch(() => {}); }; const screenshotOnTestFailure = async () => { @@ -354,7 +356,7 @@ const playwrightFixtures: Fixtures = ({ const onWillCloseContext = async (context: BrowserContext) => { await stopTracing(context.tracing); - if (screenshot === 'on' || screenshot === 'only-on-failure') { + if (screenshotMode === 'on' || screenshotMode === 'only-on-failure') { // Capture screenshot for now. We'll know whether we have to preserve them // after the test finishes. await Promise.all(context.pages().map(screenshotPage)); @@ -380,7 +382,7 @@ const playwrightFixtures: Fixtures = ({ const existingApiRequests: APIRequestContext[] = Array.from((playwright.request as any)._contexts as Set); await Promise.all(existingApiRequests.map(onDidCreateRequestContext)); } - if (screenshot === 'on' || screenshot === 'only-on-failure') + if (screenshotMode === 'on' || screenshotMode === 'only-on-failure') testInfoImpl._onTestFailureImmediateCallbacks.set(screenshotOnTestFailure, 'Screenshot on failure'); // 2. Run the test. @@ -389,7 +391,7 @@ const playwrightFixtures: Fixtures = ({ // 3. Determine whether we need the artifacts. const testFailed = testInfo.status !== testInfo.expectedStatus; const preserveTrace = captureTrace && (traceMode === 'on' || (testFailed && traceMode === 'retain-on-failure') || (traceMode === 'on-first-retry' && testInfo.retry === 1)); - const captureScreenshots = (screenshot === 'on' || (screenshot === 'only-on-failure' && testFailed)); + const captureScreenshots = screenshotMode === 'on' || (screenshotMode === 'only-on-failure' && testFailed); const traceAttachments: string[] = []; const addTraceAttachment = () => { @@ -446,7 +448,7 @@ const playwrightFixtures: Fixtures = ({ return; // Pass caret=initial to avoid any evaluations that might slow down the screenshot // and let the page modify itself from the problematic state it had at the moment of failure. - await page.screenshot({ timeout: 5000, path: addScreenshotAttachment(), caret: 'initial' }).catch(() => {}); + await page.screenshot({ ...screenshotOptions, timeout: 5000, path: addScreenshotAttachment(), caret: 'initial' }).catch(() => {}); })); } }).concat(leftoverApiRequests.map(async context => { diff --git a/packages/playwright-test/types/test.d.ts b/packages/playwright-test/types/test.d.ts index 523d059f84..36a3389d8e 100644 --- a/packages/playwright-test/types/test.d.ts +++ b/packages/playwright-test/types/test.d.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import type { APIRequestContext, Browser, BrowserContext, BrowserContextOptions, Page, LaunchOptions, ViewportSize, Geolocation, HTTPCredentials, Locator, APIResponse } from 'playwright-core'; +import type { APIRequestContext, Browser, BrowserContext, BrowserContextOptions, Page, LaunchOptions, ViewportSize, Geolocation, HTTPCredentials, Locator, APIResponse, PageScreenshotOptions } from 'playwright-core'; export * from 'playwright-core'; export type ReporterDescription = @@ -2965,7 +2965,7 @@ export interface PlaywrightWorkerOptions { * * Learn more about [automatic screenshots](https://playwright.dev/docs/test-configuration#automatic-screenshots). */ - screenshot: 'off' | 'on' | 'only-on-failure'; + screenshot: ScreenshotMode | { mode: ScreenshotMode } & Pick; /** * Whether to record trace for each test. Defaults to `'off'`. * - `'off'`: Do not record trace. @@ -2995,6 +2995,7 @@ export interface PlaywrightWorkerOptions { video: VideoMode | /** deprecated */ 'retry-with-video' | { mode: VideoMode, size?: ViewportSize }; } +export type ScreenshotMode = 'off' | 'on' | 'only-on-failure'; export type TraceMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry'; export type VideoMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry'; diff --git a/tests/page/pageTestApi.ts b/tests/page/pageTestApi.ts index cccde44901..5f315658fe 100644 --- a/tests/page/pageTestApi.ts +++ b/tests/page/pageTestApi.ts @@ -15,7 +15,7 @@ */ import type { Page, ViewportSize } from 'playwright-core'; -import type { VideoMode } from '@playwright/test'; +import type { PageScreenshotOptions, ScreenshotMode, VideoMode } from '@playwright/test'; export { expect } from '@playwright/test'; // Page test does not guarantee an isolated context, just a new page (because Android). @@ -26,6 +26,7 @@ export type PageTestFixtures = { export type PageWorkerFixtures = { headless: boolean; channel: string; + screenshot: ScreenshotMode | { mode: ScreenshotMode } & Pick; trace: 'off' | 'on' | 'retain-on-failure' | 'on-first-retry' | /** deprecated */ 'retry-with-trace'; video: VideoMode | { mode: VideoMode, size: ViewportSize }; browserName: 'chromium' | 'firefox' | 'webkit'; diff --git a/tests/playwright-test/__screenshots__/playwright.artifacts.spec.ts/screenshot-grid-fullpage.png b/tests/playwright-test/__screenshots__/playwright.artifacts.spec.ts/screenshot-grid-fullpage.png new file mode 100644 index 0000000000000000000000000000000000000000..0354694da1b1f0f3e3b06fee5a8533ea85c6091e GIT binary patch literal 75066 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%0D`$eK33G{n=EXQC4P*V>2Y}*1*!e?N^Gg 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�93MT@4hdd5@DEp1{-onzH-?KB4`WPjf`^m(Sjjl`g?;ivFik3*Q3qWVUE}xz9LlfJDdCAe+ zqIl+2`px<3G)J&mi`mEPceIgv86~5#074-iV{+8u$$yK0zq$mcuH9SowJ(as-xG|} zlQn9WCLg9oN8N}b`c7iu-7UX7p&e`-;lUCN@X_=3+^8<$9W~i5-G`{r6W15E zB>hduZ(m!PRyX}ZuMlQCLBPaKsnLZ${T&64G9UUbbes1Fx5Pxurmw)%2v3xzGvYK%Ad#uZv_>V2oedwTjq1 zZ6gr78iX5T?`S`|>jWVCv`7b6u>A#~3?QFHX#VAi&}%j+3An`bAMc0D4v&P7U}k`?{jx1j1Wv%JbT;R~@Lv z%k~oszBNWB;JUr;{t?KmuuQ){N|Vt-)v}gMXK;b>ilpw9le50%n}A!m=WRcHM}dJB z&iDi!$Gp`S?ByutRx!3`7s=4NPiIzjMO$$iX!tgQ9K-8DooD3dkxg$T#} zvlC0JcxD5U@N$<%Bp{8cD`A^<2 zxa9j!K|iuEHpi!RZ+U#t9c85oQ|O+#(`CkSCQpE*;U&#lUa5glyw4V$ZjM;#w$WG7}c@^#Smah zBoVF=KkwW)lb^?FLfj|iI8|izIxkN$)IVx)>Ptj_gK#%5<@TDvA&HjXvv|Pk z1v6Sx{%-sKRrmMGe7K%rpWT_Vyf86VwD(J2`*e*YnNwOCjnrwYs2l<+)(faYaI{?? z9b2V3swp}CrDjXv@9C|3CgoM$EuK%*+_ESG;Kc{(s!TabRpEWxGK_FtU+qw~*u?;R zjWF4DH@HY13AIV`qovKhN^#wrY=z(CLkVREfcrMbvvwnOWkVe2Y>o=G*X)eY`@+Mh z_qm)OU4?a0AGi+}U?K?rG%FCRMqM98(4Y};z&{gebKyr1%5uKbl5A`_kA`I~@179F z`y)#m6J6<7OK%=2n@-KMxYQ|V@%YxzWirfd?zk?d?X3X { + const result = await runInlineTest({ + 'artifacts.spec.ts': ` + const { test } = pwt; + + test('should fail and take fullPage screenshots', async ({ page }) => { + await page.setViewportSize({ width: 500, height: 500 }); + await page.goto('${server.PREFIX}/grid.html'); + expect(1).toBe(2); + }); + `, + 'playwright.config.ts': ` + module.exports = { use: { screenshot: { mode: 'only-on-failure', fullPage: true } } }; + `, + }, { workers: 1 }); + expect(result.exitCode).toBe(1); + expect(result.passed).toBe(0); + expect(result.failed).toBe(1); + expect(listFiles(testInfo.outputPath('test-results'))).toEqual([ + 'artifacts-should-fail-and-take-fullPage-screenshots', + ' test-failed-1.png', + 'report.json', + ]); + const screenshotFailure = fs.readFileSync( + testInfo.outputPath('test-results', 'artifacts-should-fail-and-take-fullPage-screenshots', 'test-failed-1.png') + ); + expect.soft(screenshotFailure).toMatchSnapshot('screenshot-grid-fullpage.png'); +}); + test('should work with trace: on', async ({ runInlineTest }, testInfo) => { const result = await runInlineTest({ ...testFiles, diff --git a/utils/generate_types/overrides-test.d.ts b/utils/generate_types/overrides-test.d.ts index 1476d16d77..cd85aee175 100644 --- a/utils/generate_types/overrides-test.d.ts +++ b/utils/generate_types/overrides-test.d.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import type { APIRequestContext, Browser, BrowserContext, BrowserContextOptions, Page, LaunchOptions, ViewportSize, Geolocation, HTTPCredentials, Locator, APIResponse } from 'playwright-core'; +import type { APIRequestContext, Browser, BrowserContext, BrowserContextOptions, Page, LaunchOptions, ViewportSize, Geolocation, HTTPCredentials, Locator, APIResponse, PageScreenshotOptions } from 'playwright-core'; export * from 'playwright-core'; export type ReporterDescription = @@ -208,11 +208,12 @@ export interface PlaywrightWorkerOptions { channel: BrowserChannel | undefined; launchOptions: LaunchOptions; connectOptions: ConnectOptions | undefined; - screenshot: 'off' | 'on' | 'only-on-failure'; + screenshot: ScreenshotMode | { mode: ScreenshotMode } & Pick; trace: TraceMode | /** deprecated */ 'retry-with-trace' | { mode: TraceMode, snapshots?: boolean, screenshots?: boolean, sources?: boolean }; video: VideoMode | /** deprecated */ 'retry-with-video' | { mode: VideoMode, size?: ViewportSize }; } +export type ScreenshotMode = 'off' | 'on' | 'only-on-failure'; export type TraceMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry'; export type VideoMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry';