summaryrefslogtreecommitdiffstats
path: root/remote/test/puppeteer/test/src/cdp/screencast.spec.ts
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:14:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:14:29 +0000
commitfbaf0bb26397aa498eb9156f06d5a6fe34dd7dd8 (patch)
tree4c1ccaf5486d4f2009f9a338a98a83e886e29c97 /remote/test/puppeteer/test/src/cdp/screencast.spec.ts
parentReleasing progress-linux version 124.0.1-1~progress7.99u1. (diff)
downloadfirefox-fbaf0bb26397aa498eb9156f06d5a6fe34dd7dd8.tar.xz
firefox-fbaf0bb26397aa498eb9156f06d5a6fe34dd7dd8.zip
Merging upstream version 125.0.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'remote/test/puppeteer/test/src/cdp/screencast.spec.ts')
-rw-r--r--remote/test/puppeteer/test/src/cdp/screencast.spec.ts99
1 files changed, 99 insertions, 0 deletions
diff --git a/remote/test/puppeteer/test/src/cdp/screencast.spec.ts b/remote/test/puppeteer/test/src/cdp/screencast.spec.ts
new file mode 100644
index 0000000000..2833ff4d67
--- /dev/null
+++ b/remote/test/puppeteer/test/src/cdp/screencast.spec.ts
@@ -0,0 +1,99 @@
+/**
+ * @license
+ * Copyright 2023 Google Inc.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import {statSync} from 'fs';
+
+import expect from 'expect';
+
+import {getTestState, setupTestBrowserHooks} from '../mocha-utils.js';
+import {getUniqueVideoFilePlaceholder} from '../utils.js';
+
+describe('Screencasts', function () {
+ setupTestBrowserHooks();
+
+ describe('Page.screencast', function () {
+ it('should work', async () => {
+ using file = getUniqueVideoFilePlaceholder();
+
+ const {page} = await getTestState();
+
+ const recorder = await page.screencast({
+ path: file.filename,
+ scale: 0.5,
+ crop: {width: 100, height: 100, x: 0, y: 0},
+ speed: 0.5,
+ });
+
+ await page.goto('data:text/html,<input>');
+ using input = await page.locator('input').waitHandle();
+ await input.type('ab', {delay: 100});
+
+ await recorder.stop();
+
+ expect(statSync(file.filename).size).toBeGreaterThan(0);
+ });
+ it('should work concurrently', async () => {
+ using file1 = getUniqueVideoFilePlaceholder();
+ using file2 = getUniqueVideoFilePlaceholder();
+
+ const {page} = await getTestState();
+
+ const recorder = await page.screencast({path: file1.filename});
+ const recorder2 = await page.screencast({path: file2.filename});
+
+ await page.goto('data:text/html,<input>');
+ using input = await page.locator('input').waitHandle();
+
+ await input.type('ab', {delay: 100});
+ await recorder.stop();
+
+ await input.type('ab', {delay: 100});
+ await recorder2.stop();
+
+ // Since file2 spent about double the time of file1 recording, so file2
+ // should be around double the size of file1.
+ const ratio =
+ statSync(file2.filename).size / statSync(file1.filename).size;
+
+ // We use a range because we cannot be precise.
+ const DELTA = 1.3;
+ expect(ratio).toBeGreaterThan(2 - DELTA);
+ expect(ratio).toBeLessThan(2 + DELTA);
+ });
+ it('should validate options', async () => {
+ const {page} = await getTestState();
+
+ await expect(page.screencast({scale: 0})).rejects.toBeDefined();
+ await expect(page.screencast({scale: -1})).rejects.toBeDefined();
+
+ await expect(page.screencast({speed: 0})).rejects.toBeDefined();
+ await expect(page.screencast({speed: -1})).rejects.toBeDefined();
+
+ await expect(
+ page.screencast({crop: {x: 0, y: 0, height: 1, width: 0}})
+ ).rejects.toBeDefined();
+ await expect(
+ page.screencast({crop: {x: 0, y: 0, height: 0, width: 1}})
+ ).rejects.toBeDefined();
+ await expect(
+ page.screencast({crop: {x: -1, y: 0, height: 1, width: 1}})
+ ).rejects.toBeDefined();
+ await expect(
+ page.screencast({crop: {x: 0, y: -1, height: 1, width: 1}})
+ ).rejects.toBeDefined();
+ await expect(
+ page.screencast({crop: {x: 0, y: 0, height: 10000, width: 1}})
+ ).rejects.toBeDefined();
+ await expect(
+ page.screencast({crop: {x: 0, y: 0, height: 1, width: 10000}})
+ ).rejects.toBeDefined();
+
+ await expect(
+ page.screencast({ffmpegPath: 'non-existent-path'})
+ ).rejects.toBeDefined();
+ });
+ });
+});