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?.(); } }