diff --git a/packages/html-reporter/bundle.ts b/packages/html-reporter/bundle.ts
index 7dd1c651e1..4c6bc02632 100644
--- a/packages/html-reporter/bundle.ts
+++ b/packages/html-reporter/bundle.ts
@@ -30,10 +30,10 @@ export function bundle(): Plugin {
if (!ctx || !ctx.bundle)
return html;
html = html.replace(/(?=/, '');
- for (const [name, value] of Object.entries(ctx.bundle) as any) {
+ for (const [name, value] of Object.entries(ctx.bundle)) {
if (name.endsWith('.map'))
continue;
- if (value.code)
+ if ('code' in value)
html = html.replace(/`);
else
html = html.replace(/]*>/, () => ``);
diff --git a/packages/html-reporter/src/filter.ts b/packages/html-reporter/src/filter.ts
index 9ec4ea7e59..280c9a566b 100644
--- a/packages/html-reporter/src/filter.ts
+++ b/packages/html-reporter/src/filter.ts
@@ -156,8 +156,8 @@ type SearchValues = {
const searchValuesSymbol = Symbol('searchValues');
-function cacheSearchValues(test: TestCaseSummary): SearchValues {
- const cached = (test as any)[searchValuesSymbol] as SearchValues | undefined;
+function cacheSearchValues(test: TestCaseSummary & { [searchValuesSymbol]?: SearchValues }): SearchValues {
+ const cached = test[searchValuesSymbol];
if (cached)
return cached;
@@ -178,7 +178,7 @@ function cacheSearchValues(test: TestCaseSummary): SearchValues {
labels: test.tags.map(tag => tag.toLowerCase()),
annotations: test.annotations.map(a => a.type.toLowerCase() + '=' + a.description?.toLocaleLowerCase())
};
- (test as any)[searchValuesSymbol] = searchValues;
+ test[searchValuesSymbol] = searchValues;
return searchValues;
}
diff --git a/packages/html-reporter/src/index.tsx b/packages/html-reporter/src/index.tsx
index d34aa2b640..ffbb825dd9 100644
--- a/packages/html-reporter/src/index.tsx
+++ b/packages/html-reporter/src/index.tsx
@@ -52,7 +52,7 @@ class ZipReport implements LoadedReport {
private _json!: HTMLReport;
async load() {
- const zipReader = new zipjs.ZipReader(new zipjs.Data64URIReader((window as any).playwrightReportBase64), { useWebWorkers: false });
+ const zipReader = new zipjs.ZipReader(new zipjs.Data64URIReader(window.playwrightReportBase64!), { useWebWorkers: false });
for (const entry of await zipReader.getEntries())
this._entries.set(entry.filename, entry);
this._json = await this.entry('report.json') as HTMLReport;
diff --git a/packages/playwright-core/src/server/recorder/recorderApp.ts b/packages/playwright-core/src/server/recorder/recorderApp.ts
index 03405c944e..7f9166ae73 100644
--- a/packages/playwright-core/src/server/recorder/recorderApp.ts
+++ b/packages/playwright-core/src/server/recorder/recorderApp.ts
@@ -38,7 +38,7 @@ declare global {
playwrightSetSelector: (selector: string, focus?: boolean) => void;
playwrightUpdateLogs: (callLogs: CallLog[]) => void;
dispatch(data: EventData): Promise;
- saveSettings(data: any): Promise;
+ saveSettings?(): Promise;
}
}
diff --git a/packages/web/src/theme.ts b/packages/web/src/theme.ts
index 5ea2f65566..5534e73646 100644
--- a/packages/web/src/theme.ts
+++ b/packages/web/src/theme.ts
@@ -17,10 +17,16 @@
import React from 'react';
import { type Setting, settings } from './uiUtils';
+declare global {
+ interface Document {
+ playwrightThemeInitialized?: boolean;
+ }
+}
+
export function applyTheme() {
- if ((document as any).playwrightThemeInitialized)
+ if (document.playwrightThemeInitialized)
return;
- (document as any).playwrightThemeInitialized = true;
+ document.playwrightThemeInitialized = true;
document!.defaultView!.addEventListener('focus', (event: any) => {
if (event.target.document.nodeType === Node.DOCUMENT_NODE)
document.body.classList.remove('inactive');
diff --git a/packages/web/src/uiUtils.ts b/packages/web/src/uiUtils.ts
index 54f33d229e..794ace1dc5 100644
--- a/packages/web/src/uiUtils.ts
+++ b/packages/web/src/uiUtils.ts
@@ -165,6 +165,12 @@ export function useSetting(name: string | undefined, defaultValue: S, title?:
return [value, setValueWrapper, setting];
}
+declare global {
+ interface Window {
+ saveSettings?(): Promise;
+ }
+}
+
export class Settings {
onChangeEmitter = new EventTarget();
@@ -175,8 +181,7 @@ export class Settings {
setString(name: string, value: string) {
localStorage[name] = value;
this.onChangeEmitter.dispatchEvent(new Event(name));
- if ((window as any).saveSettings)
- (window as any).saveSettings();
+ window.saveSettings?.();
}
getObject(name: string, defaultValue: T): T {
@@ -192,9 +197,7 @@ export class Settings {
setObject(name: string, value: T) {
localStorage[name] = JSON.stringify(value);
this.onChangeEmitter.dispatchEvent(new Event(name));
-
- if ((window as any).saveSettings)
- (window as any).saveSettings();
+ window.saveSettings?.();
}
}