This file is the current entry point for active testing docs in this repo.
The older generic plan was retired because it no longer matched the codebase or the Cypress-first workflow now used on cypressTesting.
docs/testing/test-runner-quick-reference.md- Quick commands for targeted unit and Cypress runs, plus guidance on when to run a narrow slice versus the broader suites.
docs/testing/cypress-architecture.md- Current maintained Cypress structure, selector rules, and migration rules.
docs/testing/README.md- Testing-doc index for core Cypress docs and view-specific folders.
docs/testing/views/- View-specific checklist, QA tracker, and bug-log folders.
docs/performance/performance-baseline-plan.md- Plan for discovering performance baselines, dataset tiers, responsiveness probes, and future timing budgets.
docs/performance/genetic-distance-refactor-performance-comparison.md- Before/after performance comparison for the genetic-distance and Newick/patristic refactor.
docs/performance/performance-dataset-strategy-for-bioinformaticians.md- Bioinformatics-facing guidance on synthetic fixtures, real datasets, and representative performance shapes.
docs/performance/problem-10k-node-only-performance.md- Case study for the
problem_10k.csvnode-only fixture, including the launch/OOM root cause, 2D grouping optimizations, and before/after measurements.
- Case study for the
- Unit and integration tests
- Angular component and service tests run through the existing test setup.
- Targeted unit runs are supported with Angular's
--includeflag.
- End-to-end tests
- Cypress is the active E2E framework.
- File-ingestion coverage lives under
cypress/e2e/ingestion/. - Uploaded-data journeys live under
cypress/e2e/journeys/flows/. - Pure 2D view-state checks live under
cypress/e2e/view-state/. - Targeted Cypress runs are supported through the local pass-through script plus
--spec. npm run start:local-cypressis the stable local app server for Cypress work and disables Angular file watching and live reload so Cypress artifact writes do not trigger rebuilds mid-run.
- Legacy-disabled specs
- Retired or fixture-broken Cypress specs live under
cypress/e2e/legacy-disabled/and are excluded from the maintained suite.
- Retired or fixture-broken Cypress specs live under
- Contract tests
- Known observed-vs-intended behavior differences should be tracked in Cypress contract coverage rather than normalized into smoke baselines.
- Load to 2D from supported file types.
- General Settings filtering behavior.
- General Settings styling behavior.
- 2D settings for nodes, links, layout, and grouping.
- Cross-feature combinations such as filtering plus grouping and filtering plus style.
- Fixture gaps that block high-value automation.
- Uploaded launch and switch-to-Map smoke coverage.
- Geospatial field mapping by zipcode and explicit latitude/longitude.
- Map-specific filtering, styling, and timeline behavior on uploaded data.
- Leaflet control mechanics, layers, tooltips, selection, export, and persistence.
- Migration of high-value sample-data-only Map coverage into maintained uploaded-data journeys.
- Uploaded launch and switch-to-Gantt smoke coverage on node-bearing fixtures.
- Uploaded date-range and single-date entry creation on supported date-bearing fields.
- Rendered SVG row-count and bar-width assertions on uploaded data.
- Uploaded Gantt export coverage and known export-flow deviations.
- Migration of remaining Gantt settings and multi-entry behaviors into maintained uploaded-data journeys.
- Uploaded launch and switch-to-Sankey smoke coverage across supported input file types.
- Sankey-specific variable selection, minimum-variable gating, and SVG render-state checks.
- Sankey visual settings such as link coloring, label sizing, tooltip behavior, and export on uploaded data.
- Migration of any high-value sample-data-only Sankey mechanics into maintained uploaded-data journeys.
- Uploaded launch and switch-to-Aggregate smoke coverage across supported input file types.
- Aggregate settings coverage for per-table field selection, add/delete table mechanics, and visible-data synchronization.
- Aggregate export behavior for JSON, XLSX, CSV zip, and PDF outputs.
- Normalization and display-label behavior for sparse uploaded categorical fields.
- Uploaded launch and switch-to-Alignment smoke coverage across supported sequence-bearing file types.
- Alignment-specific rendering checks for canvas rows, excluded nodes, and top SVG state.
- Alignment settings coverage for high-value layout controls on uploaded data.
- Alignment export behavior for image, FASTA, and CSV outputs.
- Migration of direct-launch and sequence-type gaps into maintained uploaded-data journeys.
- Uploaded launch and switch-to-Bubble smoke coverage across the main file-type matrix.
- Bubble-specific controls such as axis assignment, node sizing, collapse, and aggregate tooltip behavior.
- Bubble color-mapping, selection sync, and export behavior on uploaded data.
- Migration of high-value sample-data-only Bubble mechanics into maintained uploaded-data journeys.
- Uploaded launch and switch-to-Table smoke coverage across supported input file types.
- Table dataset switching for Nodes, Links, and Clusters.
- Table filtering, selection sync, and selected-row ordering on uploaded data.
- Table settings and export behavior for CSV and XLSX outputs.
- Migration of direct-launch and column-picker gaps into maintained uploaded-data journeys.
- Uploaded launch and switch-to-Waterfall smoke coverage across representative file types.
- Waterfall cluster summary rendering from uploaded network state.
- Cluster -> node -> link drilldown behavior on uploaded data.
- Migration of high-value Waterfall table behavior into maintained uploaded-data journeys.
- Uploaded direct-launch smoke coverage from supported tree-capable file types.
- D3 + SVG tree rendering checks tied to uploaded leaf counts and stored Newick state.
- Uploaded tree export and high-value tree settings on maintained journeys.
- Migration of high-value sample-data-only tree mechanics into maintained uploaded-data journeys.
- Keep
docs/testing/cypress-architecture.mdaligned with the actual folder structure and npm scripts. - Update the checklist and QA tracker together for the surface you changed:
docs/testing/views/2d-network/2d-network-cypress-checklist.mdanddocs/testing/views/2d-network/2d-network-cypress-qa-tracker.csvdocs/testing/views/map/map-view-cypress-checklist.mdanddocs/testing/views/map/map-view-cypress-qa-tracker.csvdocs/testing/views/epi-curve/epi-curve-cypress-checklist.mdanddocs/testing/views/epi-curve/epi-curve-cypress-qa-tracker.csvdocs/testing/views/gantt-chart/gantt-chart-cypress-checklist.mdanddocs/testing/views/gantt-chart/gantt-chart-cypress-qa-tracker.csvdocs/testing/views/aggregate/aggregate-view-cypress-checklist.mdanddocs/testing/views/aggregate/aggregate-view-cypress-qa-tracker.csvdocs/testing/views/sankey/sankey-view-cypress-checklist.mdanddocs/testing/views/sankey/sankey-view-cypress-qa-tracker.csvdocs/testing/views/crosstab/crosstab-view-cypress-checklist.mdanddocs/testing/views/crosstab/crosstab-view-cypress-qa-tracker.csvdocs/testing/views/alignment/alignment-view-cypress-checklist.mdanddocs/testing/views/alignment/alignment-view-cypress-qa-tracker.csvdocs/testing/views/bubble/bubble-view-cypress-checklist.mdanddocs/testing/views/bubble/bubble-view-cypress-qa-tracker.csvdocs/testing/views/dashboard/dashboard-cypress-checklist.mdanddocs/testing/views/dashboard/dashboard-cypress-qa-tracker.csvdocs/testing/views/heatmap/heatmap-view-cypress-checklist.mdanddocs/testing/views/heatmap/heatmap-view-cypress-qa-tracker.csvdocs/testing/views/table/table-view-cypress-checklist.mdanddocs/testing/views/table/table-view-cypress-qa-tracker.csvdocs/testing/views/waterfall/waterfall-view-cypress-checklist.mdanddocs/testing/views/waterfall/waterfall-view-cypress-qa-tracker.csvdocs/testing/views/phylogenetic-tree/phylogenetic-view-cypress-checklist.mdanddocs/testing/views/phylogenetic-tree/phylogenetic-view-cypress-qa-tracker.csv
- Update the matching bug log whenever maintained Cypress coverage exposes or resolves a product bug:
docs/testing/views/2d-network/2d-network-cypress-bug-log.csvfor 2D Networkdocs/testing/views/map/map-view-cypress-bug-log.csvfor Mapdocs/testing/views/epi-curve/epi-curve-cypress-bug-log.csvfor Epi Curvedocs/testing/views/gantt-chart/gantt-chart-cypress-bug-log.csvfor Ganttdocs/testing/views/aggregate/aggregate-view-cypress-bug-log.csvfor Aggregatedocs/testing/views/sankey/sankey-view-cypress-bug-log.csvfor Sankeydocs/testing/views/crosstab/crosstab-view-cypress-bug-log.csvfor Crosstabdocs/testing/views/alignment/alignment-view-cypress-bug-log.csvfor Alignment Viewdocs/testing/views/bubble/bubble-view-cypress-bug-log.csvfor Bubbledocs/testing/views/dashboard/dashboard-cypress-bug-log.csvfor Dashboarddocs/testing/views/heatmap/heatmap-view-cypress-bug-log.csvfor Heatmapdocs/testing/views/table/table-view-cypress-bug-log.csvfor Tabledocs/testing/views/waterfall/waterfall-view-cypress-bug-log.csvfor Waterfalldocs/testing/views/phylogenetic-tree/phylogenetic-view-cypress-bug-log.csvfor Phylogenetic Tree
- When a journey is added, move its tracker row from
MissingorPartialtoCovered. - Add the exact current Cypress spec path in the CSV once coverage exists.
- When current product behavior differs from intended behavior, keep both expectations instead of changing the intended value to make the test pass.
- Document the divergence in the matching bug log and list the spec that caught it plus the specs that must remain green after the fix.
- Track missing fixtures explicitly in the CSV instead of burying them in notes.
- Port the highest-risk sample-data-only 2D setting tests into profile-driven uploaded-data journeys.
- Port the highest-value sample-data-only Map control tests into profile-driven uploaded-data journeys.
- Port the highest-value remaining Gantt settings and multi-entry behaviors into maintained uploaded-data journeys.
- Promote the new Alignment direct-launch and sequence-type gaps from blocked tracker rows into maintained uploaded-data journeys once the product path is stable.
- Port the highest-value sample-data-only Bubble controls into profile-driven uploaded-data journeys.
- Promote the remaining high-value Table gaps such as direct-launch and column-picker coverage into maintained uploaded-data journeys.
- Port the highest-value sample-data-only Phylogenetic Tree controls into uploaded-data journeys.
- Add uploaded-data 2D link label and link width journeys next.
- Keep new Cypress work inside the maintained
journeysandview-statebuckets instead of adding more root-level mixed specs.