mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-07-25 20:14:55 +02:00
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import { test as base, expect } from '@playwright/test';
|
|
import { IGNORABLE_ERROR_MESSAGES, isIgnorableErrorMessage } from './ignorable-errors.js';
|
|
|
|
/** 通常のtestの代わりにこちらを使用する */
|
|
export const test = base.extend<{ _installIgnorableErrorHandlers: void }>({
|
|
_installIgnorableErrorHandlers: [async ({ page }, use) => {
|
|
await page.addInitScript((messages) => {
|
|
function includesIgnorableMessage(message: unknown): boolean {
|
|
if (typeof message !== 'string') return false;
|
|
return messages.some((text) => message.includes(text));
|
|
}
|
|
|
|
window.addEventListener('error', (event) => {
|
|
if (includesIgnorableMessage(event.message)) {
|
|
event.preventDefault();
|
|
}
|
|
});
|
|
|
|
window.addEventListener('unhandledrejection', (event) => {
|
|
const reason = event.reason;
|
|
const message = reason instanceof Error ? reason.message : String(reason);
|
|
if (includesIgnorableMessage(message)) {
|
|
event.preventDefault();
|
|
}
|
|
});
|
|
|
|
//@ts-ignore
|
|
window.isPlaywright = true;
|
|
}, [...IGNORABLE_ERROR_MESSAGES]);
|
|
|
|
// Playwright側で収集されるページエラーも同じ基準で握りつぶす。
|
|
page.on('pageerror', (error) => {
|
|
if (isIgnorableErrorMessage(error.message)) {
|
|
return;
|
|
}
|
|
});
|
|
|
|
await use();
|
|
}, { auto: true }],
|
|
});
|
|
|
|
export { expect };
|