Test evidence

Getting results out

Every requirement of this module, the tests named for it, and what each test recorded the last time the evidence was rebuilt.

Summary

Requirements
63
Tests named for them
71 (23 unit, 48 browser)
Result
pass every test passing
Screenshots
6
Recorded
2026-10-04 19:02 UTC
Environment
linux 6.17.0-1022-azure · node v22.23.3 · playwright 1.61.1 · chromium 149.0.7827.55
Test run
Continuous-integration run 37226711557

The requirements are the rows of the module’s requirement matrix. A test is named for a requirement by starting its name with the requirement’s ID. The results are read from the committed evidence set; continuous integration reruns every test and fails when the committed set no longer matches.

Requirements and their tests

  1. EXP-TXT-001 pass

    A placeholder, a name in braces, is replaced by the text of its value, once, left to right; a name the chart does not have is left as written; nothing in a template or a value is evaluated, so code-like text (${…}, <script>, {{…}}) is text.

    • pass unit getting results out: titles and footnotes EXP-TXT-001: a placeholder is replaced by the text of its value, once, left to right; a name the chart does not have is left as written; nothing in a template or a value is evaluated, so code-like text is shown as text (#66)
  2. EXP-TXT-002 pass

    Every chart takes title, subtitle and footnotes, null by default; a title or subtitle that is not text, or footnotes that are not text or a list of texts, are refused with a sentence naming the setting.

    • pass unit getting results out: titles and footnotes EXP-TXT-002: every chart takes `title`, `subtitle` and `footnotes`, null by default; a title or subtitle that is not text, or footnotes that are not text or a list of texts, are refused with a sentence; one footnote is a list of one (#66)
  3. EXP-TXT-003 pass

    In the page, a title, subtitle or footnote holding code-like text is drawn as that text: no element is made of it, no script runs, and a placeholder inside it is filled as text.

    • pass browser EXP-TXT-003: in the page a title, subtitle or footnote that holds code-like text is drawn as that text: no element is made of it, no script runs, and a placeholder inside it is filled as text (#66)
  4. EXP-AUTO-001 pass

    The chart's own footnote, always last, gives the date drawn (UTC), the bio.viz version, and for each statistic printed R's method and the counts R used, with which R computed it: R in this browser, or a stored result with its R and gsm.bio versions; while R is asked it says it is waiting, and it says when nothing was asked, when statistics are unavailable and when R reported an error.

    • pass unit getting results out: titles and footnotes EXP-AUTO-001: the chart’s own footnote, always last, gives the date drawn, the bio.viz version, and R’s method and counts behind every statistic printed, with the R and gsm.bio versions of a stored result; while R is asked it says it is waiting (#66)
  5. EXP-AUTO-002 pass

    A connection given computedBy, which R computed its stored results, hands that record with every stored answer and with no other; a record that is not one is refused with a sentence.

    • pass unit getting results out: titles and footnotes EXP-AUTO-002: a connection told which R computed its stored results hands that record with every stored answer, and with no other; a record that is not one is refused with a sentence (#66)
  6. EXP-AUTO-003 pass

    In the page the chart's own footnote says it is waiting while R is asked, and is written again when R answers; with no R it says statistics are unavailable, and a view that asks R nothing says so.

    • pass browser EXP-AUTO-003: the chart’s own footnote says it is waiting while R is asked and is written again when R answers in the browser; with no R it says statistics are unavailable, and a view that asks R nothing says so (#66)
  7. EXP-DRAW-001 pass

    The group comparison draws its title and subtitle above it and its footnotes under it, every placeholder filled from the view drawn, with its own footnote last naming the date, the version, R's method and counts and the R and gsm.bio versions of the stored result; it holds at 390px.

    • pass browser EXP-DRAW-001: the group comparison draws its title and subtitle above it and its footnotes under it, filled from the view drawn, with its own footnote last: the date, the bio.viz version, R’s method and counts, and the R and gsm.bio versions of the stored result; it holds at 390px (#66)
    Screenshot captured by a test of EXP-DRAW-001: titled and footnoted
  8. EXP-DRAW-002 pass

    The same for the association scatter.

    • pass browser EXP-DRAW-002: the association scatter draws its title and subtitle above it and its footnotes under it, filled from the view drawn, with its own footnote last: the date, the bio.viz version, R’s method and counts, and the R and gsm.bio versions of the stored result; it holds at 390px (#66)
    Screenshot captured by a test of EXP-DRAW-002: titled and footnoted
  9. EXP-DRAW-003 pass

    The same for the correlation matrix.

    • pass browser EXP-DRAW-003: the correlation matrix draws its title and subtitle above it and its footnotes under it, filled from the view drawn, with its own footnote last: the date, the bio.viz version, R’s method and counts, and the R and gsm.bio versions of the stored result; it holds at 390px (#66)
    Screenshot captured by a test of EXP-DRAW-003: titled and footnoted
  10. EXP-DRAW-004 pass

    The same for the biomarker screen.

    • pass browser EXP-DRAW-004: the biomarker screen draws its title and subtitle above it and its footnotes under it, filled from the view drawn, with its own footnote last: the date, the bio.viz version, R’s method and counts, and the R and gsm.bio versions of the stored result; it holds at 390px (#66)
    Screenshot captured by a test of EXP-DRAW-004: titled and footnoted
  11. EXP-DRAW-005 pass

    The same for the cross-tabulation.

    • pass browser EXP-DRAW-005: the cross tab draws its title and subtitle above it and its footnotes under it, filled from the view drawn, with its own footnote last: the date, the bio.viz version, R’s method and counts, and the R and gsm.bio versions of the stored result; it holds at 390px (#66)
    Screenshot captured by a test of EXP-DRAW-005: titled and footnoted
  12. EXP-DRAW-006 pass

    The same for the stratified survival chart.

    • pass browser EXP-DRAW-006: the stratified survival draws its title and subtitle above it and its footnotes under it, filled from the view drawn, with its own footnote last: the date, the bio.viz version, R’s method and counts, and the R and gsm.bio versions of the stored result; it holds at 390px (#66)
    Screenshot captured by a test of EXP-DRAW-006: titled and footnoted
  13. EXP-SITE-001 pass

    Each chart's demo on the gallery shows its title, subtitle and footnotes, every placeholder filled, with the chart's own footnote last; at 390px the page does not scroll sideways.

    • pass browser EXP-SITE-001: the association scatter demo shows its title, subtitle and footnotes, every placeholder filled, with the chart’s own footnote last; at 390px the page does not scroll sideways (#66)
    • pass browser EXP-SITE-001: the biomarker screen demo shows its title, subtitle and footnotes, every placeholder filled, with the chart’s own footnote last; at 390px the page does not scroll sideways (#66)
    • pass browser EXP-SITE-001: the correlation matrix demo shows its title, subtitle and footnotes, every placeholder filled, with the chart’s own footnote last; at 390px the page does not scroll sideways (#66)
    • pass browser EXP-SITE-001: the cross-tabulation demo shows its title, subtitle and footnotes, every placeholder filled, with the chart’s own footnote last; at 390px the page does not scroll sideways (#66)
    • pass browser EXP-SITE-001: the group comparison demo shows its title, subtitle and footnotes, every placeholder filled, with the chart’s own footnote last; at 390px the page does not scroll sideways (#66)
    • pass browser EXP-SITE-001: the stratified survival demo shows its title, subtitle and footnotes, every placeholder filled, with the chart’s own footnote last; at 390px the page does not scroll sideways (#66)
  14. EXP-CSV-001 pass

    A CSV is written by RFC 4180: records end in CRLF; a field or a heading holding a comma, a double quote, a carriage return or a line feed is quoted, each double quote doubled; it reads back field for field, and a number reads back as itself.

    • pass unit getting results out: the downloads EXP-CSV-001: a CSV is written by RFC 4180: CRLF between records; a field or a heading that holds a comma, a double quote, a carriage return or a line feed is quoted, with each double quote doubled; and it reads back field for field, a heading with a comma one heading (#67, #39)
  15. EXP-CSV-002 pass

    The statistics are R's answer laid out as a table: a row for each answer's result and one for each of its parts, every member R returned a column and every number R's own, with the R function asked and the data it was asked about; an answer R did not give has no rows.

    • pass unit getting results out: the downloads EXP-CSV-002: the statistics are R’s answer laid out as a table: a row for each answer’s result and one for each of its parts, every member R returned a column, every number R’s own, with the function asked and the data it was asked about; an answer R did not give has no rows (#67)
  16. EXP-PNG-001 pass

    A downloaded PNG carries its resolution as pixels per metre (pHYs) and its title, footnotes and software as UTF-8 text (iTXt), each chunk with its CRC, after the header.

    • pass unit getting results out: the downloads EXP-PNG-001: a downloaded PNG carries its resolution, as pixels per metre, and its title and footnotes as international text, each chunk with its CRC, written after the header so any reader finds them (#67)
  17. EXP-DL-001 pass

    The group comparison downloads a PNG of its frame at png_scale times its width on the page, its title and footnotes in the file; the statistics R returned as CSV, every number R's; and the table it drew from as CSV, its rows and columns; a heading with a comma reads back as one heading; each file is named for the chart and the view.

    • pass browser EXP-DL-001: the group comparison downloads a PNG of its frame at twice its size on the page, carrying its title and footnotes; the statistics R returned as CSV, R’s numbers; and the table it drew from as CSV, its rows and columns; a heading with a comma reads back as one heading (#67)
  18. EXP-DL-002 pass

    The same for the association scatter.

    • pass browser EXP-DL-002: the association scatter downloads a PNG of its frame at twice its size on the page, carrying its title and footnotes; the statistics R returned as CSV, R’s numbers; and the table it drew from as CSV, its rows and columns; a heading with a comma reads back as one heading (#67)
  19. EXP-DL-003 pass

    The same for the correlation matrix.

    • pass browser EXP-DL-003: the correlation matrix downloads a PNG of its frame at twice its size on the page, carrying its title and footnotes; the statistics R returned as CSV, R’s numbers; and the table it drew from as CSV, its rows and columns; a heading with a comma reads back as one heading (#67)
  20. EXP-DL-004 pass

    The same for the biomarker screen.

    • pass browser EXP-DL-004: the biomarker screen downloads a PNG of its frame at twice its size on the page, carrying its title and footnotes; the statistics R returned as CSV, R’s numbers; and the table it drew from as CSV, its rows and columns; a heading with a comma reads back as one heading (#67)
  21. EXP-DL-005 pass

    The same for the cross-tabulation.

    • pass browser EXP-DL-005: the cross tab downloads a PNG of its frame at twice its size on the page, carrying its title and footnotes; the statistics R returned as CSV, R’s numbers; and the table it drew from as CSV, its rows and columns; a heading with a comma reads back as one heading (#67)
  22. EXP-DL-006 pass

    The same for the stratified survival chart.

    • pass browser EXP-DL-006: the stratified survival downloads a PNG of its frame at twice its size on the page, carrying its title and footnotes; the statistics R returned as CSV, R’s numbers; and the table it drew from as CSV, its rows and columns; a heading with a comma reads back as one heading (#67)
  23. EXP-DL-007 pass

    Every chart takes downloads, true by default, and png_scale, 2 by default, from 1 to 4, and refuses anything else with a sentence; with downloads false the bar is not shown, png_scale sets the picture's size and resolution, and the statistics download waits for an answer from R and is not offered by a view that asks R nothing.

    • pass browser EXP-DL-007: with `downloads` false the bar is not shown; the statistics download waits for R’s answer; and `png_scale` sets the picture’s size and resolution (#67)
    • pass unit getting results out: the downloads EXP-DL-007: every chart takes `downloads`, true by default, and `png_scale`, 2 by default, from 1 to 4; anything else is refused with a sentence (#67)
  24. EXP-AUTO-004 pass

    The chart's own footnote names every method R used for what is printed, the pairwise test beside the overall one, and every adjustment of the p-values, by name.

    • pass unit getting results out: what the #69 review found EXP-AUTO-004: the chart’s own footnote names every method R used for what is printed, the pairwise test beside the overall one, and every adjustment of the p-values, by name (#69 review)
  25. EXP-AUTO-005 pass

    The footnote never names a released version for code that is not one: a build with changes since its release says with development changes; package.json's bioviz.development is true exactly while the release log has an upcoming section, and false in a tagged build.

    • pass unit getting results out: what the #69 review found EXP-AUTO-005: the footnote never names a released version for code that is not one: with development changes on the integration branch it says so; the package says so exactly while its version is released and another is upcoming, never while a release is prepared or once it is promoted, and never in a tagged build (#69 review, #75)
  26. EXP-AUTO-006 pass

    Counts are named for four groups and summarised for five or more, numeric text is read as a number, and many counts are summarised without spreading them; the source is the connection's form as it says, and a stored result's date is named.

    • pass unit getting results out: what the #69 review found EXP-AUTO-006: the counts are named for four groups and summarised for five, numeric text is read as a number, many counts are summarised without spreading them; the source is the connection’s form as it says, and a stored result’s date is named (#69 review)
  27. EXP-TXT-004 pass

    A title or subtitle of only white space is absent; a chart whose placeholders throw is still titled and the error is reported; each placeholder's value is a run of its own, drawn in a <bdi> so its direction is isolated.

    • pass unit getting results out: what the #69 review found EXP-TXT-004: a title or subtitle of only white space is absent; a chart whose placeholders throw is still titled, and the error is reported, not swallowed; each placeholder’s value is its own run of text, so a page can isolate its direction (#69 review)
  28. EXP-TXT-005 pass

    In the group comparison's overview, {n} is the participants drawn anywhere on its page of biomarkers.

    • pass browser EXP-TXT-005: in the group comparison’s overview, {n} is the participants drawn anywhere on its page of biomarkers, not blank (#69 review)
  29. EXP-UPD-001 pass

    The group comparison's title and subtitle are filled again when a filter or a control moves: {filters} names the filter, {n} counts the participants it lets through, and the control's placeholder reads its new value.

    • pass browser EXP-UPD-001: the group comparison’s title and subtitle are filled again when a filter or a control moves: {filters} names the filter, {n} counts the participants it lets through, and the control’s placeholder reads its new value (#69 review)
  30. EXP-UPD-002 pass

    The same for the association scatter.

    • pass browser EXP-UPD-002: the association scatter’s title and subtitle are filled again when a filter or a control moves: {filters} names the filter, {n} counts the participants it lets through, and the control’s placeholder reads its new value (#69 review)
  31. EXP-UPD-003 pass

    The same for the correlation matrix.

    • pass browser EXP-UPD-003: the correlation matrix’s title and subtitle are filled again when a filter or a control moves: {filters} names the filter, {n} counts the participants it lets through, and the control’s placeholder reads its new value (#69 review)
  32. EXP-UPD-004 pass

    The same for the biomarker screen.

    • pass browser EXP-UPD-004: the biomarker screen’s title and subtitle are filled again when a filter or a control moves: {filters} names the filter, {n} counts the participants it lets through, and the control’s placeholder reads its new value (#69 review)
  33. EXP-UPD-005 pass

    The same for the cross-tabulation.

    • pass browser EXP-UPD-005: the cross tab’s title and subtitle are filled again when a filter or a control moves: {filters} names the filter, {n} counts the participants it lets through, and the control’s placeholder reads its new value (#69 review)
  34. EXP-UPD-006 pass

    The same for the stratified survival chart.

    • pass browser EXP-UPD-006: the stratified survival’s title and subtitle are filled again when a filter or a control moves: {filters} names the filter, {n} counts the participants it lets through, and the control’s placeholder reads its new value (#69 review)
  35. EXP-PNG-002 pass

    On a wide page and on a phone, the PNG draws the marks the chart draws, each where the page has it: every disc of the correlation matrix and its colour key, and the screen's zero line, intervals and dots.

    • pass browser EXP-PNG-002: on a phone, the PNG draws the marks the chart draws: every disc of the correlation matrix and its colour key, and the screen’s zero line, intervals and dots, each where the page has it (#70 review)
    • pass browser EXP-PNG-002: on a wide page, the PNG draws the marks the chart draws: every disc of the correlation matrix and its colour key, and the screen’s zero line, intervals and dots, each where the page has it (#70 review)
  36. EXP-PNG-003 pass

    On a phone, what scrolls sideways in the frame is drawn whole, the survival chart's at-risk table to its last column, and the picture is as wide as it needs.

    • pass browser EXP-PNG-003: on a phone, what scrolls sideways in the frame is drawn whole: the survival chart’s at-risk table to its last column, with no scroll bar, the picture as wide as it needs (#70 review)
  37. EXP-PNG-004 pass

    Every control of a chart's frame (the toolbar, the hint, the listing, the bar of downloads, a chart's own download and pager buttons) is marked bv-no-picture, which the picture leaves out.

    • pass browser EXP-PNG-004: nothing a reader works the chart with is in the picture: every control of the frame (the toolbar, the hint, the listing, the bar of downloads, a chart’s own download and pager buttons) is marked to be left out (#70 review)
  38. EXP-DL-008 pass

    A download that fails says so in the bar, in a line a screen reader announces; the next download works and takes the line away.

    • pass browser EXP-DL-008: a download that fails says so in the bar, where the reader sees it, and the next one works (#70 review)
  39. EXP-DL-009 pass

    The table download holds the value a cut was made from: the survival chart's biomarker beside its group, and the cross-tabulation's for a cut row or column.

    • pass browser EXP-DL-009: the table download holds the value a cut was made from: the survival chart’s biomarker beside its group, and the cross-tabulation’s for a cut row or column; its headings, as written (#70 review)
  40. EXP-CSV-003 pass

    Every member R returned is a column, however nested: lists of objects or of lists in the data asked about are flattened by place, nested names are joined by a slash, and a member that would take an identifying column's name, or two written alike, is refused.

    • pass unit getting results out: what the #70 review found EXP-CSV-003: every member R returned is a column, however nested: a list of objects or of lists in the data asked about is flattened by position (a list of values alone is one field), nested names are joined by a slash, and an R member that would take an identifying column’s name, or two names that would meet, is refused, not overwritten (#70 review)
  41. EXP-CSV-004 pass

    NaN, Inf and -Inf are written as R writes them, apart from a value missing; a list of values is joined by | .

    • pass unit getting results out: what the #70 review found EXP-CSV-004: R’s NaN, Inf and -Inf are written as R writes them, apart from a value missing; a list of values is joined by “ | ”, which R’s notes do not use (#70 review)
  42. EXP-SPEC-001 pass

    A specification names its format, its format version, the bio.viz version, the chart, every setting that is data and every filter in force as a column, an operator and values; the page's connection and way back, and anything that is not data, are not written.

    • pass unit getting results out: specifications EXP-SPEC-001: a specification names its format, its version, the bio.viz version, the chart, every setting that is data and every filter in force as a column, an operator and values; the page’s connection and way back, and anything not data, are not written (#68)
  43. EXP-SPEC-002 pass

    Nothing in a specification is evaluated: code-like text in a setting or a filter is read as that text; a function, a number JSON cannot hold, undefined or an object that is not plain is refused with a sentence that says where it is; a key reaching an object's prototype is no setting.

    • pass unit getting results out: specifications EXP-SPEC-002: nothing in a specification is evaluated: code-like text in a setting or a filter is read as that text; a function, a number JSON cannot hold, undefined or an object that is not plain is refused with a sentence that says where it is (#68)
  44. EXP-SPEC-003 pass

    A specification is refused with a sentence naming what is wrong when it is not one, is of another format version, names a chart bio.viz does not have, holds a setting the chart does not have in this version, or a filter whose operator is not in; one written by another version is read when its settings are still settings; a filter in force is laid onto the chart's filters as where it starts.

    • pass unit getting results out: specifications EXP-SPEC-003: a specification is refused, with a sentence that names what is wrong, when it is not one, is of another format version, names a chart bio.viz does not have, holds a setting the chart does not have in this version, or a filter whose operator is not `in`; one written by another version is read when its settings are still settings (#68)
  45. EXP-SPEC-004 pass

    The format has a JSON schema, committed as src/data/specification.schema.json and written from each chart's own settings; npm test fails when it is stale; it holds a written specification and refuses an unknown chart, an unknown setting of a chart, an unknown operator and an unknown member.

    • pass unit getting results out: specifications EXP-SPEC-004: the format has a JSON schema, committed and written from each chart’s own settings, so it names exactly the settings each chart has; it holds a written specification and refuses an unknown chart, an unknown setting of a chart, an unknown operator and a member that is not one (#68)
  46. EXP-SPEC-005 pass

    The group comparison writes its specification, held by the schema, as its controls and filters now read; made again from it by BioViz.fromSpecification, the chart draws the same view, asks R the same and writes the same specification.

    • pass browser EXP-SPEC-005: the group comparison writes its specification, held by the schema, as its controls and filters now read; made again from it, the chart draws the same view, asks R the same, and writes the same specification (#68)
  47. EXP-SPEC-006 pass

    The same for the association scatter.

    • pass browser EXP-SPEC-006: the association scatter writes its specification, held by the schema, as its controls and filters now read; made again from it, the chart draws the same view, asks R the same, and writes the same specification (#68)
  48. EXP-SPEC-007 pass

    The same for the correlation matrix.

    • pass browser EXP-SPEC-007: the correlation matrix writes its specification, held by the schema, as its controls and filters now read; made again from it, the chart draws the same view, asks R the same, and writes the same specification (#68)
  49. EXP-SPEC-008 pass

    The same for the biomarker screen.

    • pass browser EXP-SPEC-008: the biomarker screen writes its specification, held by the schema, as its controls and filters now read; made again from it, the chart draws the same view, asks R the same, and writes the same specification (#68)
  50. EXP-SPEC-009 pass

    The same for the cross-tabulation.

    • pass browser EXP-SPEC-009: the cross tab writes its specification, held by the schema, as its controls and filters now read; made again from it, the chart draws the same view, asks R the same, and writes the same specification (#68)
  51. EXP-SPEC-010 pass

    The same for the stratified survival chart.

    • pass browser EXP-SPEC-010: the stratified survival writes its specification, held by the schema, as its controls and filters now read; made again from it, the chart draws the same view, asks R the same, and writes the same specification (#68)
  52. EXP-SPEC-011 pass

    In the page, a chart made from a specification holding code-like text draws it as text and runs nothing; one with a setting the chart does not have, or an operator that is not in, is refused with a sentence and makes no chart.

    • pass browser EXP-SPEC-011: a filter value that looks like code and is in the data is drawn as text, and filters by it (#71 review)
    • pass browser EXP-SPEC-011: in the page, a chart made from a specification that holds code-like text draws it as text and runs nothing; one with a setting the chart does not have, or an operator that is not `in`, is refused with a sentence and makes no chart (#68)
  53. EXP-SPEC-012 pass

    The site publishes the format's schema at schema/specification.json, the committed file.

    • pass browser EXP-SPEC-012: the site publishes the format’s schema at schema/specification.json, the committed file (#68)
  54. EXP-SPEC-013 pass

    A selection emptied by hand round-trips: every Visit of the group comparison and every biomarker of the correlation matrix unticked write [], which the reader takes, and the chart made again draws the same nothing.

    • pass browser EXP-SPEC-013: a selection emptied by hand round-trips: every Visit unticked in the group comparison, and every biomarker of the correlation matrix, write [] that the reader takes, and the chart made again draws the same nothing (#71 review)
  55. EXP-SPEC-014 pass

    A filter of several values emptied by hand writes values: [] and comes back empty, letting nobody through.

    • pass browser EXP-SPEC-014: a filter of several values emptied by hand writes values [] and comes back empty, letting nobody through, not as All (#71 review)
  56. EXP-SPEC-015 pass

    What a specification asks for that the data cannot draw is said above the chart and listed in chart.notices: a filter on a column the participant table lacks, a value a filter does not offer, a grouping the tables lack, a filter on the id column; a filter named twice is refused.

    • pass browser EXP-SPEC-015: what a specification asks for that the data cannot draw is said on the chart and listed in chart.notices: a filter on a column the participant table does not have, a value a filter does not offer, a grouping the tables do not have, a filter on the id column; a filter named twice is refused (#71 review)
  57. EXP-SPEC-016 pass

    A specification opens on the same page of the group comparison's overview and of the screen, in the screen's order, and the survival chart's Groups keep the cut it opened on after a moved line.

    • pass browser EXP-SPEC-016: a specification opens on the same page of the group comparison’s overview and of the screen, in the screen’s order, and the survival chart’s Groups keep the cut it opened on after a moved line (#71 review)
  58. EXP-SPEC-017 pass

    Reading a specification makes every check making the chart makes: a value the chart refuses is refused with the chart's sentence, and an empty selection the chart can draw is read.

    • pass unit getting results out: what the #71 review found EXP-SPEC-017: reading a specification makes every check making the chart makes: a setting’s value the chart refuses is refused with the chart’s own sentence, and an empty selection the chart can draw is read (#71 review)
  59. EXP-SPEC-018 pass

    An object given as a specification is read once, own data properties only: a getter or a setter is refused, a Proxy's traps run once each and only the copy is checked, and nesting deeper than 64 is refused.

    • pass unit getting results out: what the #71 review found EXP-SPEC-018: an object given as a specification is read once, own data properties only: a getter or a setter is refused, a Proxy’s traps run once each and the copy alone is checked, and nesting deeper than 64 is refused with a sentence (#71 review)
  60. EXP-SPEC-019 pass

    __proto__, constructor and prototype are no column: a filter on one, or a setting naming one, is refused by the reader and the schema.

    • pass unit getting results out: what the #71 review found EXP-SPEC-019: `__proto__`, `constructor` and `prototype` are no column: a filter on one, or a setting that names one as its column, is refused by the reader and the schema (#71 review)
  61. EXP-SPEC-020 pass

    The reader and the schema agree: bio_viz_version is text, a filter names a column once and each value once, a column's name is not blank, settings.filters is a list or null; the schema gives every setting's default and is written from the one chart list.

    • pass unit getting results out: what the #71 review found EXP-SPEC-020: the reader and the schema agree: `bio_viz_version` is text, a filter names one column once with its values each once, a column’s name is not blank, `settings.filters` is a list or null, and the schema gives every setting’s default (#71 review)
  62. EXP-SITE-002 pass

    Every chart's picture in the gallery is a capture of its frame taken by captureGallery, which fails rather than capture when the frame lacks its title or its own footnote, or when R has not answered.

    • pass unit getting results out: the gallery EXP-SITE-002: every chart’s picture in the gallery is a capture taken by captureGallery, which holds the capture to the chart’s frame with its title and its own footnote inside it (#66)
  63. EXP-SITE-003 pass

    The built gallery shows every chart in that picture, its title and footnotes drawn in, and at 390px the page does not scroll sideways.

    • pass browser EXP-SITE-003: the built gallery shows every chart in a picture of its frame with its title and footnotes, its own last, and at 390px the page does not scroll sideways (#66)

Tests run with every module

92 tests of the site, the evidence pipeline and the repository’s own checks

These are recorded in every module’s evidence set. A requirement ID one of them carries belongs to another module’s page.

  • pass browser CORE-SITE-001: the home page names the library and its version, and shows the version its bundle reports (#1)
  • pass browser CORE-SITE-002: the home page holds at a 390px-wide viewport with no horizontal scroll (#1)
  • pass browser CORE-SITE-003: the gallery is reached from the home page and lists the published charts, or says that none is published yet (#7)
  • pass browser CORE-SITE-004: the gallery lists each shared part, and its two links lead to that module’s evidence page and API reference (#7)
  • pass browser CORE-SITE-006: every module has an evidence page that lists each requirement of its matrix (#7)
  • pass browser CORE-SITE-006: the connection to R’s evidence page lists every RCON- and PVAL- requirement with the tests that prove it (#7)
  • pass browser CORE-SITE-007: a screenshot a test captured is shown under its requirement on the evidence page (#7)
  • pass browser CORE-SITE-009: every module has an API reference page that documents each name it exports (#7)
  • pass browser CORE-SITE-009: the connection to R’s API reference documents createConnection and formatStatistic (#7)
  • pass browser CORE-SITE-012: the gallery holds at a 390px-wide viewport with no horizontal scroll (#7)
  • pass browser CORE-SITE-013: each module’s evidence page holds at a 390px-wide viewport with no horizontal scroll (#7)
  • pass browser CORE-SITE-014: each module’s API reference holds at a 390px-wide viewport, with its tables restacked (#7)
  • pass browser CORE-SITE-015: the site serves the synthetic study, and the gallery gives its row counts and the commit it was copied from (#7)
  • pass unit API reference page CORE-SITE-009: a link to another reference file goes to that module’s page, and the page names the file it was rendered from (#7)
  • pass unit API reference page CORE-SITE-009: the page is the reference file, rendered: its title, sections, tables and code (#7)
  • pass unit API reference page CORE-SITE-009: the sections are listed at the top, each linked to its place on the page (#7)
  • pass unit API reference: held to the code CORE-MAN-006: an export listed as data is documented as one, under one heading, and its fields are not held one by one (#32)
  • pass unit API reference: held to the code CORE-SITE-010: a constant whose value the reference does not give is a problem (#7)
  • pass unit API reference: held to the code CORE-SITE-010: a function the reference documents that the bundle does not export is a problem (#7)
  • pass unit API reference: held to the code CORE-SITE-010: a namespace in the surface stands for each of its members, and a constant carries its value (#7)
  • pass unit API reference: held to the code CORE-SITE-010: a parameter the source documents and the reference leaves out is a problem (#7)
  • pass unit API reference: held to the code CORE-SITE-010: a reference that documents every export, parameter and constant has no problems (#7)
  • pass unit API reference: held to the code CORE-SITE-010: an export no module claims, a surface the bundle lacks and an empty surface are each a problem (#7)
  • pass unit API reference: held to the code CORE-SITE-010: an export with no heading in the reference is a problem (#7)
  • pass unit API reference: held to the code CORE-SITE-010: the committed references document everything the committed bundle exports (#7)
  • pass unit API reference: held to the code CORE-SITE-010: the connection’s reference is held to the parameters its source documents (#7)
  • pass unit API reference: held to the code GC-SITE-004: a chart’s reference names every setting the chart has, and a setting it leaves out is a problem (#9)
  • pass unit evidence normalizer buildEvidenceSets splits records per module and duplicates shared scaffold records (#1)
  • pass unit evidence normalizer buildRun builds GitHub Actions run provenance from the environment (#1)
  • pass unit evidence normalizer compareEvidence flags status drift and test-set changes, ignoring screenshots (#1)
  • pass unit evidence normalizer compareEvidence ignores provenance so --check never drifts on generatedAt/environment/run (#1)
  • pass unit evidence normalizer CORE-SITE-011: a requirement row with no test named for it is reported (#7)
  • pass unit evidence normalizer CORE-SITE-011: a test that names a requirement in no matrix is reported with the test (#7)
  • pass unit evidence normalizer moduleForFile routes test files to modules by path (#1)
  • pass unit evidence normalizer normalizePlaywright walks nested suites into browser-suite records (#1)
  • pass unit evidence normalizer normalizeVitest maps assertion results to unit-suite records (#1)
  • pass unit evidence normalizer parseTestName extracts requirement IDs and issue refs (#1)
  • pass unit evidence normalizer parseTestName recognizes any requirement-ID prefix, not just SH (#1)
  • pass unit evidence normalizer provenance lives in dedicated top-level keys; the records array stays timestamp-free (#1)
  • pass unit evidence page CORE-SITE-006: a requirement with no test says so, and the summary counts it (#7)
  • pass unit evidence page CORE-SITE-006: each requirement shows the tests named for it, unit or browser, with the result each recorded (#7)
  • pass unit evidence page CORE-SITE-006: every requirement is listed in the matrix’s order with its text (#7)
  • pass unit evidence page CORE-SITE-006: tests that carry none of the module’s requirements are listed apart, as run with every module (#7)
  • pass unit evidence page CORE-SITE-006: with every requirement tested and passing the summary says every test is passing (#7)
  • pass unit evidence page CORE-SITE-007: a screenshot is shown under the requirement it was captured for, and only there (#7)
  • pass unit evidence page CORE-SITE-007: the build is told of a screenshot the evidence names that is not committed (#7)
  • pass unit evidence page CORE-SITE-008: results recorded on a developer’s machine say so, and absent provenance is not invented (#7)
  • pass unit evidence page CORE-SITE-008: the page says when and where the results were recorded and links the run (#7)
  • pass unit evidence page the page links the module’s requirement matrix and its committed evidence set (#7)
  • pass unit gallery CORE-SITE-003: a chart that is registered but not yet available is not listed as published (#7)
  • pass unit gallery CORE-SITE-003: a chart’s card shows its picture once that screenshot is committed, and no picture before (#9)
  • pass unit gallery CORE-SITE-003: a registered chart is listed under Charts with links to its evidence page and API reference (#7)
  • pass unit gallery CORE-SITE-003: with no chart registered the gallery says that no chart is published yet (#7)
  • pass unit gallery CORE-SITE-004: each shared part is listed with links to its evidence page and API reference (#7)
  • pass unit gallery CORE-SITE-004: the registry as committed lists the core and the connection to R as shared parts (#7)
  • pass unit gallery CORE-SITE-015: the gallery says what each table of the synthetic study holds, its rows, and the commit it was copied from (#7)
  • pass unit gallery the home page heads its callout for one chart and for several (#26)
  • pass unit gallery the home page links each module’s evidence page and API reference, and the gallery (#7)
  • pass unit gallery the home page says there are no charts yet only while none is published (#9)
  • pass unit markdown: blocks a relative link points at the repository, and a link to another reference file at its page (#7)
  • pass unit markdown: blocks CORE-SITE-009: a fenced block is code, escaped and left as written, and a # inside it is not a heading (#7)
  • pass unit markdown: blocks CORE-SITE-009: a table keeps each column heading on every cell, so it can restack on a narrow screen (#7)
  • pass unit markdown: blocks CORE-SITE-009: headings get the anchors GitHub gives them, repeated ones numbered (#7)
  • pass unit markdown: blocks CORE-SITE-009: paragraphs join their lines, and bullet and numbered lists keep theirs apart (#7)
  • pass unit markdown: inline keeps a code span inside a link label, and links a bare address in angle brackets (#7)
  • pass unit markdown: inline mdText strips the marks and keeps the words (#7)
  • pass unit markdown: inline reads nothing inside a code span as a link or as emphasis (#7)
  • pass unit markdown: inline renders code, links, bold and italic, and escapes everything else (#7)
  • pass unit module registry CORE-SITE-005: an entry that does not say whether it is a chart or a shared part is refused (#7)
  • pass unit module registry CORE-SITE-005: an entry without its matrix or its API reference is refused, as is a name registered twice (#7)
  • pass unit module registry CORE-SITE-005: the registry as committed is well formed (#7)
  • pass unit R check page RCON-PAGE-001: the page has a button that starts R, the stated tolerance and the versions desktop R used (#3)
  • pass unit R check page RCON-PAGE-002: the recorded megabytes, requests and seconds are shown for cold, reload and warm, with how they were measured (#3)
  • pass unit R check page RCON-PAGE-003: with no recorded measurement the page says so and prints no number in its place (#3)
  • pass unit repo hygiene no source or test file carries a machine-specific absolute path (#1)
  • pass unit requirements-lib: freshness guard flags added and removed requirement IDs (#1)
  • pass unit requirements-lib: freshness guard flags changed requirement text (#1)
  • pass unit requirements-lib: freshness guard reports fresh when the committed set matches a fresh extraction (#1)
  • pass unit requirements-lib: matrix parsing ignores the header, separator, and non-requirement content (#1)
  • pass unit requirements-lib: matrix parsing keeps an escaped pipe inside a requirement cell as a single row (#1)
  • pass unit requirements-lib: matrix parsing maps each requirement ID to its reviewed text (#1)
  • pass unit requirements-lib: requirement set wraps the parsed map with module + matrix provenance (#1)
  • pass unit requirements-lib: unregistered matrices passes when every matrix file is registered, ignoring the README and non-markdown files (#1)
  • pass unit requirements-lib: unregistered matrices reports a matrix file no module in site/config.json names (#1)
  • pass unit site pages CORE-SITE-001: the home page names the library and its version (#1)
  • pass unit site pages escapeHtml escapes the five HTML-significant characters (#1)
  • pass unit site pages renderShell fills title, description, version and root, and leaves no token behind (#1)
  • pass unit site pages summarizeModule counts requirement rows and passing test records (#1)
  • pass unit site pages the home page links to the R check page (#3)
  • pass unit site pages the home page lists each registered module with its counts and a link to its matrix (#1)
  • pass unit site validation: internal links flags internal links and asset references that do not resolve (#1)
  • pass unit site validation: internal links passes a site whose internal links all resolve, ignoring external and fragment links (#1)

Checking this page

npm ci
npm run evidence:check   # rerun every test and compare with the committed evidence set
npm run evidence         # rebuild docs/evidence/output/evidence.json