Files
go_bt/tests/screenshot_closed_page.test.js
T

43 lines
1.5 KiB
JavaScript

'use strict';
const assert = require('assert');
const { saveErrorScreenshot, saveCheckpointScreenshot, _private } = require('../src/utils/screenshot');
(async () => {
let waitCalls = 0;
let screenshotCalls = 0;
const closedPage = {
isClosed: () => true,
waitForTimeout: async () => { waitCalls++; },
screenshot: async () => { screenshotCalls++; },
};
assert.strictEqual(await saveErrorScreenshot(closedPage, 'closed@example.com', 'unit'), null);
assert.strictEqual(await saveCheckpointScreenshot(closedPage, 'closed@example.com', 'unit'), null);
assert.strictEqual(waitCalls, 0, '已关闭页面不能继续等待');
assert.strictEqual(screenshotCalls, 0, '已关闭页面不能继续截图');
assert.strictEqual(
_private.isTargetClosedError(new Error('page.waitForTimeout: Target page, context or browser has been closed')),
true,
);
assert.strictEqual(_private.isTargetClosedError(new Error('disk full')), false);
let maskSelector = '';
const maskLocators = _private.getSensitiveMaskLocators({
locator: (selector) => {
maskSelector = selector;
return { selector };
},
});
assert.strictEqual(maskLocators.length, 1);
assert(maskSelector.includes('input[name*="password" i]'),
'截图必须遮盖已切换为明文类型的密码输入框');
assert(maskSelector.includes('input[autocomplete="one-time-code"]'),
'截图必须遮盖动态验证码输入框');
console.log('screenshot_closed_page.test.js: PASS');
})().catch(error => {
console.error(error);
process.exit(1);
});