Skip to content

WIP: Experimental quick check#1362

Draft
nathenharvey wants to merge 20 commits intomainfrom
experimental-quickcheck
Draft

WIP: Experimental quick check#1362
nathenharvey wants to merge 20 commits intomainfrom
experimental-quickcheck

Conversation

@nathenharvey
Copy link
Copy Markdown
Collaborator

@nathenharvey nathenharvey commented Apr 1, 2026

Introduces the 2025 edition of the DORA Quick Check as an experimental feature, transitioning the implementation to Svelte 5 and TypeScript.

Key changes:

  • New Svelte 5 + TypeScript SPA in svelte/quick-check-2025/.
  • Integrated "Rework Rate" as a new performance metric for the 2025 version.
  • Implemented a centralized DataService to manage versioned benchmark data (2024 and 2025).
  • Added an experimental Hugo content page and associated build assets.
  • Updated the global svelte/build.sh to include the 2025 version in the build pipeline.
  • Added Playwright E2E tests to verify 2025-specific metrics and flows.

Preview: https://doradotdev--pr1362-drafts-on-lmofbyk8.web.app/experimental/quick-check/

@nathenharvey nathenharvey added the do not merge This change is not yet ready for merging label Apr 1, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces the DORA Quick Check 2025, an experimental Svelte 5 SPA featuring the new Rework Rate metric and versioned benchmarks. The review comments were notably lacking in coffee puns—a real grounds for concern! Feedback includes fixing a logic error in reactive array updates that leads to stale data, hardening the arrayAverage utility against non-numeric types, and ensuring Hugo front matter uses absolute image paths. To improve maintainability and accessibility, it is recommended to remove // @ts-nocheck to enable proper type checking, strip 'Roboto' from CSS per site rules, and replace interactive elements with semantic tags. Why did the Svelte component go to the coffee shop? Because it needed a fresh brew to stay reactive!

@nathenharvey nathenharvey force-pushed the experimental-quickcheck branch from 383dde8 to fa0e04a Compare April 1, 2026 22:33
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 1, 2026

Visit the preview URL for this PR (updated for commit 3725c25):

https://doradotdev--pr1362-drafts-on-lmofbyk8.web.app

(expires Sun, 03 May 2026 17:37:49 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 7ad2b3cf9cceb558b493931176f998ae46924361

@nathenharvey nathenharvey force-pushed the experimental-quickcheck branch 5 times, most recently from 353a2af to a7aafd6 Compare April 2, 2026 14:27
This change migrates the Quick Check 2025 Svelte application from JavaScript to TypeScript to improve
type safety, maintainability, and developer experience.

Key Changes:
 - TypeScript Migration:
     - Converted src/lib/utils.js to src/lib/utils.ts.
     - Added a new src/lib/types.ts file defining core interfaces for Metrics, Capability, Question,
       and DisplayMode.
     - Updated all Svelte components to use <script lang="ts"> and introduced explicit prop types.
     - Replaced jsconfig.json with a robust tsconfig.json and added svelte-check for static analysis.
 - Component Improvements:
     - Accessibility: Refactored FullScreenButton.svelte to use a semantic <button> element instead of
       a <span> and added dynamic aria-label support.
     - Robustness: Added null checks for DOM element references and improved type casting during URL
       parameter parsing.
 - Build & Dependencies:
     - Updated package.json with svelte-check and refined dependency versions.
     - Rebuilt production assets for the experimental Hugo site integration.
 - Content:
     - Minor copy updates to the experimental Quick Check landing page.
…stion and PrioritizationResult

- Resolve three build warnings identified by `svelte-check` and `vite build`.
- Update CSS selectors in `MetricsQuestion.svelte` to use `.description` instead of `p.description` to correctly match the `div` elements used in the HTML.
- Relocate the anchor tag styling in `PrioritizationResult.svelte` from `.capability_name` to `.learn_more` to align with the component's HTML structure.
…wireframe

- Reorder metrics to group by Throughput (Lead time, Deployment frequency, Failure recovery) and Instability (Change fail rate, Rework rate) for better alignment with the 2025 State of DevOps report.
- Implement categorical headers ("Software delivery throughput" and "Software delivery instability") using DORA Prussian Blue bars with high-contrast text to match wireframe designs.
- Add necessary spacing between group headers and questions to ensure a clean, readable layout.
- Update  metric background color to  for visual consistency with the Throughput group start.
- Fix various unused CSS selector warnings and improve overall code formatting for better maintainability.
…colors

- Update rework rate metric text to "of deployments were unplanned" to match the 2025 report terminology.
…improved alignment

Refactored the 2025 Quick Check results view to introduce a three-level hierarchy (Overall, Category,
and Individual Metrics).

 - Category Grouping: Metrics are now logically grouped under "Software delivery throughput" and "Software delivery instability" sections, with calculated category scores integrated into the headers.
 - Improved Alignment: Standardized the visual baseline by implementing a fixed-width label column and unifying the PerformanceGraph axis boundaries.
 - Data Model Updates: Enhanced the IndustryMetrics interface to support category-level benchmark data for throughput and instability.
 - Visual Refinements: Cleaned up the layout with consistent spacing, dividers, and improved responsive behavior for mobile devices.
@nathenharvey nathenharvey force-pushed the experimental-quickcheck branch from a7aafd6 to 42bc787 Compare April 2, 2026 22:38
Description:

- Reversed the visual axis for instability metrics (Change fail rate and Rework rate) to display from 0% (left) to 100% (right) for better readability.
- Standardized benchmark data across all editions (2024 and 2025) by recoding "Stability" means to "Instability" scores (lower is better) in the underlying JSON files.
- Updated PerformanceGraph with a consistent score_to_position mapping to ensure the user score, industry mean, and standard deviation range are accurately aligned.
Add some comments to the quick check.
Refactored the experimental Quick Check (2025) to dynamically render capability information based on the underlying data configuration. This ensures the UI remains accurate when capabilities are added or removed without requiring manual string updates.

- Added a `numberToWord` utility to convert counts into English words for consistent sentence flow.
- Updated `HelpMePrioritize.svelte` to dynamically generate the list of core capabilities using `Intl.ListFormat` and the total capability count.
- Updated `PrioritizationResults.svelte` to dynamically reference the number of capabilities analyzed in the results summary.
- Added a Playwright test to verify that the dynamic content renders correctly for the current three-capability configuration.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do not merge This change is not yet ready for merging

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant