Skip to content

Introduce TypeScript, FSD, coverage bot, and required LG Simulator CI - #19

Merged
volkovmqx merged 14 commits into
mainfrom
codex/webos-simulator
Oct 20, 2026
Merged

volkovmqx merged 14 commits into
mainfrom
codex/webos-simulator

Conversation

@volkovmqx

@volkovmqx volkovmqx commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Summary

The app uses strict TypeScript and Feature-Sliced Design. Knip checks unused code. Vitest requires at least 95% statements, branches, functions, and lines. A pinned coverage bot reports the results on pull requests.

src/                     app, pages, widgets, features, entities, shared
quality / quality        types, FSD, Knip, coverage, Chromium, Chrome 68
quality / webos-simulator production dist/, LG Simulator, nine scenarios
build / release / Docker require both quality jobs

The Simulator job runs on Ubuntu 24.04 with Xvfb at 1920×1080. It verifies the pinned webOS TV 26 Simulator 1.5.0 archive before use. Tests select the application target through CDP, send native navigation keys, intercept requests with local fixtures, isolate storage, and preserve storage during restart tests. Reports remain available for 14 days. Cleanup stops the Simulator process group.

CONTRIBUTING.md explains TypeScript, FSD, tests, coverage, translations, Simulator setup, and deployment. The README contains new 1920×1080 screenshots and an automatic contributor widget. The Homebrew listing uses the same screenshot files from main. The package author is volkovmqx.

Review fixes remove duplicate player state and the Root wrapper. Search results and stored talks now use one validator. Invalid saved entries cannot crash the UI. Valid older talks with nullable descriptions remain supported. The Docker image path now matches the documented ghcr.io/volkovmqx/cccbib path.

Evidence

  • The final CI run passed on its first attempt. Both required checks, the coverage bot, and both Node.js packaging jobs passed. The artifact reports confirm nine Simulator tests, zero failures or skips, nine isolated profiles, and 1920×1080 screenshots.
  • Final local checks pass: TypeScript, Steiger, both Knip modes, 210 unit/React tests, three Chromium tests, Chrome 68, all nine Simulator scenarios, and IPK packaging. Simulator tests have no retries or skipped scenarios. No child processes remain after the suite.
  • Standards review: three boundary findings are fixed. Debloat review: duplicate state and the wrapper are removed. Spec review: no missing requirements. Final reviews found no remaining blockers.
  • A live API check accepts 846 talks, including the older talk with description: null. Regression tests cover malformed search results, corrupt saved data, and nullable descriptions.
  • The compatibility run verified the required CDP operations before the full suite was added. The runtime reported Chromium 120.0.6099.291.
  • The Simulator integration passed three independent CI runs: 1, 2, 3. Each had nine tests with no retries, failures, or skipped scenarios.
  • The broken assertion, missing executable, and CDP connection refusal failed CI and blocked packaging. A local check also confirmed that coverage below 95% fails.
  • The coverage bot comment updates automatically. Fork and Dependabot pull requests receive a job summary.
Coverage Result
Statements 99.33%
Branches 96.36%
Functions 99.43%
Lines 99.56%

GitHub requires quality / webos-simulator and quality / quality before merges to main, including administrator merges. The branch must be up to date.

Risk

The migration changes application imports and screen composition. Storage keys and formats remain unchanged. Simulator tests do not verify TV hardware decoders or real webOS services. No release or Docker image was published.

@volkovmqx volkovmqx changed the title Introduce FSD quality checks and LG Simulator CI Introduce FSD, TS, Tests and LG Simulator CI Oct 20, 2026
@volkovmqx volkovmqx changed the title Introduce FSD, TS, Tests and LG Simulator CI Introduce FSD, coverage gates, and required LG Simulator CI Oct 20, 2026
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Coverage Report for Application

Status Category Percentage Covered / Total
🟢 Lines 99.56% (🎯 95%) 2507 / 2518
🟢 Statements 99.33% (🎯 95%) 2998 / 3018
🟢 Functions 99.43% (🎯 95%) 709 / 713
🟢 Branches 96.36% (🎯 95%) 2094 / 2173
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
src/index.tsx 0% 0% 0% 0%
src/app/entrypoint/App.tsx 100% 96.15% 100% 100%
src/app/model/index.ts 0% 0% 0% 0%
src/app/routing/Screens.tsx 100% 100% 96.55% 100%
src/entities/conference/index.ts 0% 0% 0% 0%
src/entities/conference/model/homeCache.ts 100% 100% 100% 100%
src/entities/conference/model/types.ts 0% 0% 0% 0%
src/entities/talk/index.ts 0% 0% 0% 0%
src/entities/talk/@x/conference.ts 0% 0% 0% 0%
src/entities/talk/api/mapping.ts 100% 100% 100% 100%
src/entities/talk/api/queries.ts 100% 100% 100% 100%
src/entities/talk/api/remoteTalk.ts 100% 91.66% 100% 100%
src/entities/talk/model/types.ts 0% 0% 0% 0%
src/entities/talk/model/validation.ts 100% 100% 100% 100%
src/features/playback-history/index.ts 0% 0% 0% 0%
src/features/playback-history/model/types.ts 0% 0% 0% 0%
src/features/remote-control/index.ts 0% 0% 0% 0%
src/features/remote-control/model/items.ts 100% 100% 100% 100%
src/features/remote-control/model/types.ts 0% 0% 0% 0%
src/features/watchlist/index.ts 0% 0% 0% 0%
src/pages/conference/index.ts 0% 0% 0% 0%
src/pages/conferences/index.ts 0% 0% 0% 0%
src/pages/home/index.ts 0% 0% 0% 0%
src/pages/home/model/navigation.ts 100% 95.45% 100% 100%
src/pages/home/model/types.ts 0% 0% 0% 0%
src/pages/home/ui/Home.tsx 100% 96.69% 100% 100%
src/pages/popular/index.ts 0% 0% 0% 0%
src/pages/search/index.ts 0% 0% 0% 0%
src/pages/search/api/search.ts 100% 100% 100% 100%
src/pages/settings/index.ts 0% 0% 0% 0%
src/pages/watchlist/index.ts 0% 0% 0% 0%
src/shared/api/graphql.ts 100% 100% 100% 100%
src/shared/api/index.ts 0% 0% 0% 0%
src/shared/branding/index.ts 0% 0% 0% 0%
src/shared/config/index.ts 0% 0% 0% 0%
src/shared/config/settings.ts 100% 100% 100% 100%
src/shared/i18n/index.ts 0% 0% 0% 0%
src/shared/lib/index.ts 0% 0% 0% 0%
src/shared/lib/scrollHelpers.ts 100% 100% 100% 100%
src/shared/ui/index.ts 0% 0% 0% 0%
src/shared/ui/types.ts 0% 0% 0% 0%
src/widgets/player/index.ts 0% 0% 0% 0%
src/widgets/player/model/nowPlaying.ts 100% 100% 100% 100%
src/widgets/player/model/types.ts 0% 0% 0% 0%
src/widgets/player/model/useRemoteControl.ts 100% 100% 100% 100%
src/widgets/sidebar/index.ts 0% 0% 0% 0%
src/widgets/talk-preview/index.ts 0% 0% 0% 0%
Generated in workflow #48 for commit 80e31eb by the Vitest Coverage Report Action

@volkovmqx volkovmqx changed the title Introduce FSD, coverage gates, and required LG Simulator CI Introduce TypeScript, FSD, coverage bot, and required LG Simulator CI Oct 20, 2026
@Saulimedes

Copy link
Copy Markdown
Collaborator

Nicely done. I had a similar idea adding more tests.

@volkovmqx
volkovmqx marked this pull request as ready for review October 20, 2026 13:32
@volkovmqx
volkovmqx merged commit 1a90d42 into main Oct 20, 2026
5 checks passed
@volkovmqx
volkovmqx deleted the codex/webos-simulator branch October 20, 2026 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants