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>
* Dedicated gallery AGENTS.md
* Dont auto open the dev server for gallery
* Refactor and theme gallery
* Add icons
* Better positioning of icons
* Reorganise sidebar
* Remove extra title
* Remove header/toolbar height override
* Add some global spacing for content
* Show flipped theme mode for comparisions
* Remove unnesassary headings
* Fix eslint webpack resolution path for gallery vscode import errors
* Scroll item into view
* Fix theme variables
* Fix theme when system theme is dark and set to light
* Review
* Review
* Review
* Review
* Add mock
* Fix buttons
* Generate third party license file during production build
* Add license check CI step
* Address review comments: use license-checker-rseidelsohn, add version validation for LICENSE_OVERRIDES
* Fix license-checker-rseidelsohn import (CJS module, use require)
* Update dependency @rspack/dev-server to v2
* Upgrade @rspack/core to 2.0.0
Pairs with the @rspack/dev-server 2.0.0 bump in #51666 — dev-server v2
declares @rspack/core ^2.0.0-0 as a peer, so the two must move together.
Patches webpackbar to defend against non-string info in Rspack 2's
ProgressPlugin handler (otherwise `parseRequest` throws `split is not a
function` during compilation).
Verified locally: yarn lint:types, yarn test, yarn lint, script/build_frontend,
and all three rspack-dev-server-{demo,cast,gallery} tasks.
* Wrap webpackbar instead of patching it
Replace the yarn patch with a small SafeWebpackBar subclass that sanitizes
the progress `details` array before the upstream parseRequest sees it.
Keeps the fix local to the Rspack config where it belongs.
* Pass moduleIdentifier to webpackbar progress
Rspack 2's progress info is `{ builtModules, moduleIdentifier? }`.
moduleIdentifier is what v1 passed as a plain string, so extract it to
keep the "active module" line in the progress bar instead of blanking it.
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Update eslint to v10.1.0
Migrate from eslint-plugin-import to eslint-plugin-import-x since the
original plugin uses removed ESLint 10 APIs (context.parserOptions,
context.parserPath). Airbnb-base non-import rules preserved via
FlatCompat with import rules stripped and replaced by import-x.
- eslint 9.39.4 → 10.1.0
- Add eslint-plugin-import-x 4.16.2
- Add @eslint/eslintrc and @eslint/js as explicit deps
- Remove --flag v10_config_lookup_from_file (now default)
- Replace /* eslint-env */ comment with config-based globals
- Update all import/ rule references to import-x/
* Remove unnecessary eslint-disable for generated gallery imports
The import-pages file is generated as .ts, so import-x/extensions
doesn't require an extension (ts: "never" in config).
The @rspack/dev-server overlay catches ResizeObserver loop errors as
runtime crashes, showing a full-screen error overlay that blocks
development. These errors are benign — they originate from
lit-virtualizer (used by ha-data-table) and simply mean not all
resize observations could be delivered in a single animation frame.
Add a client.overlay.runtimeErrors filter to the dev server config
that suppresses ResizeObserver loop messages while still surfacing
all real runtime errors.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Separate entity, device and area name in more info dialog header
* Use has_entity_name
* Separate entity, device and area name in entity picker
* Fix entity name with has entity name
* Fix compute entity name
* Add full name
* Add floor
* Improve code quality
* Use compute entity name in device entities card
* Use context functions
* Remove floor
* Use state name provided by backend
* Use breadcrumb for more info
* Revert entity picker changes
* Use new logic in device page
* Use breadcrumb
* Use join directive
* Add comments
* Use secondary text color
* Update compute_entity_name.ts
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Remove html join
* Improve computeDeviceNameDisplay
* Fallback to original name
* Simplify more info logic
* Include breadcrumb for child view (voice assistant)
---------
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* fix issues with develop and serve
* fix get image data, use hassUrl
* save picture-upload
* Update bundje.cjs
* Prettier
* Fix profile picture in dev serve mode
* person badge too
---------
Co-authored-by: Wendelin <w@pe8.at>
* Update ts-eslint
* Remove comments
* Remove unused ts-ignore
* Add undefined generic type instead of unknown
* Remove unused undefined type
* Fix type issues
* Use undefined instead of void for subscribed return type
* Made it easier to test the frontend against an existing core instance.
* Ensured that script works regardless of current working dir
* Use consistent quote style
* Also allow using variables in hassUrl override
* Improved the default behavior of the script
* more consistent variable naming
* don't install a global dependency
* documented caching wierdness where if you switch core endpoints the old one remains in use
* Simplified some code
* improved documentation
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>