mirror of
https://github.com/home-assistant/frontend.git
synced 2026-07-02 03:55:52 +01:00
2c8d6c1a02
Adds Playwright end-to-end tests covering three targets: - the demo build - a new lightweight test app exercising several scenarios (theming, admin/non-admin sidebar, panel navigation, more-info dialog) - the component gallery Includes the gulp/rspack build infra for the test app and an "E2E Tests" GitHub Actions workflow that builds each target once, shares it via artifacts, and runs the suites on Chromium and mobile Chrome. Browser install is cached and retried to avoid intermittent download stalls. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
164 lines
6.6 KiB
JSON
164 lines
6.6 KiB
JSON
{
|
|
"compilerOptions": {
|
|
// Language Options
|
|
"target": "ES2021",
|
|
"lib": ["ES2021", "DOM", "DOM.Iterable", "WebWorker"],
|
|
"experimentalDecorators": true,
|
|
"useDefineForClassFields": false,
|
|
// Modules
|
|
"module": "ESNext",
|
|
"moduleResolution": "bundler",
|
|
"resolveJsonModule": true,
|
|
// Babel handles transpiling and no need for declaration files
|
|
"noEmit": true,
|
|
// Caching
|
|
"incremental": true,
|
|
"tsBuildInfoFile": "node_modules/.cache/typescript/.tsbuildinfo",
|
|
// Type checking options
|
|
"noUnusedLocals": true,
|
|
"noUnusedParameters": true,
|
|
"noImplicitReturns": true,
|
|
"noFallthroughCasesInSwitch": true,
|
|
"strict": true,
|
|
"noImplicitAny": false,
|
|
// Do not check type declaration files
|
|
"skipLibCheck": true,
|
|
// Interop with CommonJS and other tools
|
|
"esModuleInterop": true,
|
|
"isolatedModules": true,
|
|
"plugins": [
|
|
{
|
|
"name": "ts-lit-plugin",
|
|
"strict": true,
|
|
"rules": {
|
|
// Custom elements
|
|
"no-unknown-tag-name": "error",
|
|
"no-missing-import": "error",
|
|
"no-missing-element-type-definition": "error",
|
|
// Binding names
|
|
"no-unknown-attribute": "off",
|
|
"no-legacy-attribute": "error",
|
|
// Binding types
|
|
"no-incompatible-type-binding": "warning",
|
|
// LitElement
|
|
"no-property-visibility-mismatch": "error",
|
|
// CSS
|
|
"no-invalid-css": "off" // warning does not work
|
|
},
|
|
"globalTags": ["google-cast-launcher"]
|
|
}
|
|
],
|
|
"paths": {
|
|
"lit/static-html": ["./node_modules/lit/static-html.js"],
|
|
"lit/decorators": ["./node_modules/lit/decorators.js"],
|
|
"lit/directive": ["./node_modules/lit/directive.js"],
|
|
"lit/directives/until": ["./node_modules/lit/directives/until.js"],
|
|
"lit/directives/class-map": [
|
|
"./node_modules/lit/directives/class-map.js"
|
|
],
|
|
"lit/directives/style-map": [
|
|
"./node_modules/lit/directives/style-map.js"
|
|
],
|
|
"lit/directives/if-defined": [
|
|
"./node_modules/lit/directives/if-defined.js"
|
|
],
|
|
"lit/directives/guard": ["./node_modules/lit/directives/guard.js"],
|
|
"lit/directives/cache": ["./node_modules/lit/directives/cache.js"],
|
|
"lit/directives/repeat": ["./node_modules/lit/directives/repeat.js"],
|
|
"lit/directives/live": ["./node_modules/lit/directives/live.js"],
|
|
"lit/directives/keyed": ["./node_modules/lit/directives/keyed.js"],
|
|
"lit/polyfill-support": ["./node_modules/lit/polyfill-support.js"],
|
|
"@lit-labs/virtualizer/layouts/grid": [
|
|
"./node_modules/@lit-labs/virtualizer/layouts/grid.js"
|
|
],
|
|
"@lit-labs/virtualizer/polyfills/resize-observer-polyfill/ResizeObserver": [
|
|
"./node_modules/@lit-labs/virtualizer/polyfills/resize-observer-polyfill/ResizeObserver.js"
|
|
],
|
|
"@lit-labs/observers/resize-controller": [
|
|
"./node_modules/@lit-labs/observers/resize-controller.js"
|
|
],
|
|
"@formatjs/intl-durationformat/should-polyfill": [
|
|
"./node_modules/@formatjs/intl-durationformat/should-polyfill.js"
|
|
],
|
|
"@formatjs/intl-durationformat/polyfill-force": [
|
|
"./node_modules/@formatjs/intl-durationformat/polyfill-force.js"
|
|
],
|
|
"@formatjs/intl-datetimeformat/should-polyfill": [
|
|
"./node_modules/@formatjs/intl-datetimeformat/should-polyfill.js"
|
|
],
|
|
"@formatjs/intl-datetimeformat/polyfill-force": [
|
|
"./node_modules/@formatjs/intl-datetimeformat/polyfill-force.js"
|
|
],
|
|
"@formatjs/intl-displaynames/should-polyfill": [
|
|
"./node_modules/@formatjs/intl-displaynames/should-polyfill.js"
|
|
],
|
|
"@formatjs/intl-displaynames/polyfill-force": [
|
|
"./node_modules/@formatjs/intl-displaynames/polyfill-force.js"
|
|
],
|
|
"@formatjs/intl-getcanonicallocales/should-polyfill": [
|
|
"./node_modules/@formatjs/intl-getcanonicallocales/should-polyfill.js"
|
|
],
|
|
"@formatjs/intl-getcanonicallocales/polyfill-force": [
|
|
"./node_modules/@formatjs/intl-getcanonicallocales/polyfill-force.js"
|
|
],
|
|
"@formatjs/intl-listformat/should-polyfill": [
|
|
"./node_modules/@formatjs/intl-listformat/should-polyfill.js"
|
|
],
|
|
"@formatjs/intl-listformat/polyfill-force": [
|
|
"./node_modules/@formatjs/intl-listformat/polyfill-force.js"
|
|
],
|
|
"@formatjs/intl-locale/should-polyfill": [
|
|
"./node_modules/@formatjs/intl-locale/should-polyfill.js"
|
|
],
|
|
"@formatjs/intl-locale/polyfill-force": [
|
|
"./node_modules/@formatjs/intl-locale/polyfill-force.js"
|
|
],
|
|
"@formatjs/intl-numberformat/should-polyfill": [
|
|
"./node_modules/@formatjs/intl-numberformat/should-polyfill.js"
|
|
],
|
|
"@formatjs/intl-numberformat/polyfill-force": [
|
|
"./node_modules/@formatjs/intl-numberformat/polyfill-force.js"
|
|
],
|
|
"@formatjs/intl-pluralrules/should-polyfill": [
|
|
"./node_modules/@formatjs/intl-pluralrules/should-polyfill.js"
|
|
],
|
|
"@formatjs/intl-pluralrules/polyfill-force": [
|
|
"./node_modules/@formatjs/intl-pluralrules/polyfill-force.js"
|
|
],
|
|
"@formatjs/intl-relativetimeformat/should-polyfill": [
|
|
"./node_modules/@formatjs/intl-relativetimeformat/should-polyfill.js"
|
|
],
|
|
"@formatjs/intl-relativetimeformat/polyfill-force": [
|
|
"./node_modules/@formatjs/intl-relativetimeformat/polyfill-force.js"
|
|
],
|
|
"@formatjs/intl-pluralrules/locale-data/en": [
|
|
"./node_modules/@formatjs/intl-pluralrules/locale-data/en.js"
|
|
],
|
|
"@home-assistant/webawesome/dist/components/*": [
|
|
"./node_modules/@home-assistant/webawesome/dist/components/*"
|
|
],
|
|
"@home-assistant/webawesome/dist/events/*": [
|
|
"./node_modules/@home-assistant/webawesome/dist/events/*"
|
|
],
|
|
"@home-assistant/webawesome/dist/internal/*": [
|
|
"./node_modules/@home-assistant/webawesome/dist/internal/*"
|
|
],
|
|
"@lit-labs/virtualizer/virtualize": [
|
|
"./node_modules/@lit-labs/virtualizer/virtualize.js"
|
|
],
|
|
"@lit/reactive-element/reactive-controller": [
|
|
"./node_modules/@lit/reactive-element/reactive-controller.js"
|
|
],
|
|
"echarts/types/src/*": ["./node_modules/echarts/types/src/*.d.ts"],
|
|
"echarts/lib/*": ["./node_modules/echarts/lib/*"],
|
|
"home-assistant-js-websocket/dist/*": [
|
|
"./node_modules/home-assistant-js-websocket/dist/*"
|
|
],
|
|
"lit/directives/join": ["./node_modules/lit/directives/join.js"],
|
|
"lit/directives/ref": ["./node_modules/lit/directives/ref.js"]
|
|
}
|
|
},
|
|
// Exclude e2e tests — they have their own tsconfig that adds node types.
|
|
"exclude": ["test/e2e"]
|
|
}
|