Test evidence

Connection to R

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

Summary

Requirements
80
Tests named for them
86 (71 unit, 15 browser)
Result
pass every test passing
Screenshots
1
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. RCON-API-001 pass

    createConnection(options) returns an object whose one call is run(name, { data, args, dataId }).

    • pass unit connection: the call and its three answers RCON-API-001: createConnection returns an object whose one call is run (#2)
  2. RCON-API-002 pass

    run always resolves to a result object and never rejects, whatever is thrown underneath, including a bare string.

    • pass unit connection: the call and its three answers RCON-API-002: run resolves and never rejects, whatever the engine throws (#2)
  3. RCON-API-003 pass

    A call run cannot make sense of (no function name, data that is not an array of records, arguments that are not named) resolves to an error result whose message begins bio.viz:, and does not start R.

    • pass unit connection: the call and its three answers RCON-API-003: a call run cannot make sense of resolves to an error, without starting R (#2)
  4. RCON-API-004 pass

    A connection is refused when it is created if a browser-form setting is malformed: packages that are not a list of valid R package names, a source that is not text, both a source and a source URL, a location that is not text, or an engine without start and call.

    • pass unit connection: the browser form starts R lazily and once RCON-API-004: a browser form with a malformed setting is refused when the connection is created (#2)
  5. RCON-API-005 pass

    Both committed bundles export the connection and the formatter as r.createConnection and r.formatStatistic: BioViz.r on a page.

    • pass unit bundle: the connection ships, webR does not RCON-API-005: BioViz.r.createConnection and BioViz.r.formatStatistic are exported by both committed bundles (#2)
  6. RCON-RES-001 pass

    When R answers, the result is { status: 'ok', value, form }: the value R returned, and which form answered, precomputed or browser.

    • pass unit connection: the call and its three answers RCON-RES-001: ok carries the value R returned and the form that answered (#2)
  7. RCON-RES-002 pass

    With neither form configured, the result is { status: 'unavailable', reason: 'no-r-attached', message }, and nothing is requested.

    • pass browser RCON-RES-002: with neither form configured the page answers unavailable, and requests nothing (#2)
    • pass unit connection: the call and its three answers RCON-RES-002: with neither form configured, run answers unavailable with a reason (#2)
  8. RCON-RES-003 pass

    When the R function fails, the result is { status: 'error', message } with R's message.

    • pass unit connection: the call and its three answers RCON-RES-003: error carries R's message when the R function fails (#2)
  9. RCON-PRE-001 pass

    With stored results, a call that has one is answered without starting R and without a network request.

    • pass browser RCON-PRE-001: with stored results the page answers without making a network request (#2)
    • pass unit connection: the precomputed form RCON-PRE-001: a stored result is answered with nothing loaded and no network request (#2)
  10. RCON-PRE-002 pass

    A stored result is found by its function name, its arguments and its data identity together; the order the arguments are written in does not matter.

    • pass unit connection: the precomputed form RCON-PRE-002: a stored result is keyed by function name, arguments and data identity; argument order does not matter (#2)
  11. RCON-PRE-003 pass

    A call with no exact stored result is answered unavailable with reason not-precomputed and no value: another function, other arguments, other data, no data identity given, or a row count that differs from the one recorded.

    • pass unit connection: the precomputed form RCON-PRE-003: a call with no stored result answers unavailable, never another result (#2)
  12. RCON-PRE-004 pass

    Stored results that are malformed, or that hold two results under one key, are refused when the connection is created.

    • pass unit connection: the precomputed form RCON-PRE-004: stored results that are malformed or ambiguous are refused when the connection is created (#2)
  13. RCON-PRE-005 pass

    With both forms configured, a call with no stored result is answered by R in the browser.

    • pass unit connection: the precomputed form RCON-PRE-005: with both forms, a call with no stored result goes to R in the browser (#2)
  14. RCON-PRE-006 pass

    Changing a value a call returned does not change the stored result.

    • pass unit connection: the precomputed form RCON-PRE-006: changing a returned value does not change the stored result (#2)
  15. RCON-LAZY-001 pass

    Creating a connection starts nothing; the first run that needs R starts the engine, with the location, packages and source the connection was given.

    • pass unit connection: the browser form starts R lazily and once RCON-LAZY-001: creating a connection starts nothing; the first run starts the engine with its configuration (#2)
  16. RCON-LAZY-002 pass

    Two simultaneous first calls cause one start, and later calls reuse it.

    • pass unit connection: the browser form starts R lazily and once RCON-LAZY-002: two simultaneous first calls cause one start, and later calls reuse it (#2)
  17. RCON-LAZY-003 pass

    A start that fails answers unavailable with reason load-failed and the cause, for every call waiting on it, and the next run tries again.

    • pass browser RCON-LAZY-003: when webR cannot be fetched the page answers unavailable with the cause (#2)
    • pass unit connection: the browser form starts R lazily and once RCON-LAZY-003: a failed start answers unavailable for every waiting call, and the next run tries again (#2)
  18. RCON-LAZY-004 pass

    In the browser form nothing is requested until the first run, and two simultaneous first runs load webR once.

    • pass browser RCON-LAZY-004: the browser form requests nothing until the first run, and two simultaneous first runs load webR once (#2)
    • pass unit webR engine: what is loaded, and from where RCON-LAZY-004: nothing is imported until the first run, and two simultaneous first runs import once (#2)
  19. RCON-ISO-001 pass

    Two connections share no state: each has its own stored results and starts its own engine.

    • pass unit connection: the browser form starts R lazily and once RCON-ISO-001: two connections share nothing: each starts its own engine (#2)
  20. RCON-WEBR-001 pass

    webR is pinned to version 0.6.0 and loaded from its public CDN unless another location is given; a location relative to the page is resolved against the page.

    • pass browser RCON-WEBR-001: by default the page asks the public CDN for webR 0.6.0, and only on the first run (#2)
    • pass unit webR engine: what is loaded, and from where RCON-WEBR-001: webR is pinned to 0.6.0 and loaded from the public CDN unless another location is given (#2)
  21. RCON-WEBR-002 pass

    webR is started on the PostMessage channel on every host.

    • pass unit webR engine: what is loaded, and from where RCON-WEBR-002: webR is started on the PostMessage channel (#2)
  22. RCON-WEBR-003 pass

    The R packages the connection was told to are installed and attached, and the R source it was given is evaluated once.

    • pass unit webR engine: what is loaded, and from where RCON-WEBR-003: the packages it was told to are installed and attached, and the R source is evaluated once (#2)
  23. RCON-WEBR-004 pass

    An R source given by URL is fetched on the first run, not before, and once.

    • pass unit webR engine: what is loaded, and from where RCON-WEBR-004: an R source given by URL is fetched on the first run, not before (#2)
  24. RCON-WEBR-005 pass

    A start that fails part-way closes the R session it opened and reports the cause.

    • pass unit webR engine: what is loaded, and from where RCON-WEBR-005: a start that fails closes what it opened and reports why (#2)
  25. RCON-CALL-001 pass

    The array of records goes to R as one column per variable, with the function name and the arguments, each as an R named list.

    • pass unit webR engine: one call RCON-CALL-001: the records go to R as columns, with the function name and the arguments (#2)
  26. RCON-CALL-002 pass

    Every column has a value for every row; a value that is absent or not a number goes to R as missing.

    • pass unit webR engine: one call RCON-CALL-002: recordsToColumns gives every column every row, with missing values as null (#2)
  27. RCON-CALL-003 pass

    The list R returns comes back as plain JavaScript objects, arrays, numbers, text and booleans.

    • pass unit webR engine: one call RCON-CALL-003: the list R returns becomes plain JavaScript (#2)
  28. RCON-CALL-004 pass

    Each kind of R value other than a data frame has one JavaScript shape: a named list or named vector is an object, an unnamed list is an array, an unnamed vector is a single value when its length is one and an array otherwise, and NULL or NA is null. A value with no plain form is an error.

    • pass unit webR engine: one call RCON-CALL-004: toPlain maps each kind of R value to one JavaScript shape (#2)
  29. RCON-CALL-005 pass

    An R error is reported with R's own message and nothing added, and the R objects made for a call are released whether it succeeds or fails.

    • pass unit webR engine: one call RCON-CALL-005: an R error is reported with R's message, and the R objects of the call are released (#2)
  30. RCON-CALL-006 pass

    Nested arguments go to R as nested lists, and a call with no data or no arguments sends none.

    • pass unit webR engine: one call RCON-CALL-006: nested arguments go to R as nested lists, and a call with no data or arguments sends neither (#2)
  31. RCON-CALL-007 pass

    The R code that passes a table in and a result out uses base R only, and computes no statistic.

    • pass unit webR engine: one call RCON-CALL-007: the R that passes a table in and a result out uses base R only (#2)
  32. RCON-CALL-008 pass

    A data frame R returns, at any depth, comes back as an array of row objects, one per row, with every column in every row and NA as null: an empty array for no rows and an array of one object for one row, the same shape data has going in.

    • pass unit webR engine: one call RCON-CALL-008: a data frame R returns becomes an array of row objects, whatever its size and depth (#2)
  33. RCON-BUILD-001 pass

    The build bundles only files under src/ and does not resolve the webR import.

    • pass unit bundle: the connection ships, webR does not RCON-BUILD-001: the build bundles only files under src/ and does not resolve the webR import (#2)
  34. RCON-BUILD-002 pass

    The committed bundles keep the import of webR as a run-time import of a URL and contain none of webR: every file a bundle names as one it was made from is a file under src/, and the bundles hold no known marker of webR's code.

    • pass unit bundle: the connection ships, webR does not RCON-BUILD-002: the committed bundles keep the dynamic import and carry none of webR (#2)
  35. RCON-BUILD-003 pass

    The r module imports nothing from outside src/r/, so the connection can be handed to a chart in another library.

    • pass unit bundle: the connection ships, webR does not RCON-BUILD-003: the r module imports nothing from outside src/r (#2)
  36. RCON-CHECK-001 pass

    On the R check page two numbers count as the same answer when they differ by no more than 1 part in 10^8 of the larger; zero equals only zero, and something that is not a number equals nothing.

    • pass unit R check page: comparing two answers from R RCON-CHECK-001: two numbers agree when they differ by no more than 1 part in 10^8, and not beyond (#3)
  37. RCON-CHECK-002 pass

    Every member of an answer is compared with the expected one: numbers by the tolerance; text, counts, warnings and the shape of the answer exactly. A member missing or added fails.

    • pass unit R check page: comparing two answers from R RCON-CHECK-002: every member is compared: numbers by the tolerance, text and structure exactly (#3)
  38. RCON-CHECK-003 pass

    A number is shown in full, as the shortest text that reads back as exactly that number, so a difference in the last digit is visible.

    • pass unit R check page: comparing two answers from R RCON-CHECK-003: a number is shown in full, so a difference in the last digit is visible (#3)
  39. RCON-CHECK-004 pass

    The page's tables are read from CSV with their numeric columns as numbers and blanks as missing.

    • pass unit R check page: comparing two answers from R RCON-CHECK-004: a table is read from CSV with its numeric columns as numbers and blanks as missing (#3)
  40. RCON-CHECK-005 pass

    The committed expected results name the script, the R version and the survival version that made them.

    • pass unit R check page: the committed expected results RCON-CHECK-005: the expected results name the script, the R version and the survival version that made them (#3)
  41. RCON-CHECK-006 pass

    Each expected result is a stored result on its committed table: given to the precomputed form with that table, it is answered.

    • pass unit R check page: the committed expected results RCON-CHECK-006: each expected result is a stored result on its committed table, which the precomputed form answers (#3)
  42. RCON-PAGE-001 pass

    The R check page has a button that starts R and does not start it otherwise; it states the tolerance and the R and survival versions that made the desktop answers.

    • 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)
  43. RCON-PAGE-002 pass

    The page shows the recorded megabytes, requests, requests answered from the network and seconds for three states named separately, cold, reload and warm, with the browser, machine, date and method of the measurement.

    • 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)
  44. RCON-PAGE-003 pass

    With no measurement recorded the page says so and prints no number in its place.

    • pass unit R check page RCON-PAGE-003: with no recorded measurement the page says so and prints no number in its place (#3)
  45. RCON-LIVE-001 pass

    On the R check page, with no R attached, the call answers that statistics are unavailable.

    • pass browser RCON-LIVE-001: with no R attached the page answers that statistics are unavailable (#3)
  46. RCON-LIVE-002 pass

    On the R check page the precomputed form gives the desktop-R answers for both tests with no R loaded and no request to R's hosts.

    • pass browser RCON-LIVE-002: the precomputed form gives the desktop-R answers with no R loaded and no request to R's hosts (#3)
    Screenshot captured by a test of RCON-LIVE-002: answers shipped with the page
  47. RCON-LIVE-003 pass

    R started in the browser gives the Wilcoxon rank-sum result desktop R gives, within the stated tolerance.

    • pass browser RCON-LIVE-003: R in the browser gives the rank-sum result desktop R gives, within the stated tolerance (#3)
  48. RCON-LIVE-004 pass

    The survival package installs and loads in the browser, and the log-rank result is the one desktop R gives, within the stated tolerance.

    • pass browser RCON-LIVE-004: the survival package installs and loads, and the log-rank result is the one desktop R gives (#3)
  49. RCON-LIVE-005 pass

    Cold, a first visit with nothing cached: megabytes over the network, requests and seconds to the first result are measured, and webR is loaded once from the pinned version on its public CDN.

    • pass browser RCON-LIVE-005: cold, a first visit with nothing cached: megabytes, requests and seconds to the first result (#3)
  50. RCON-LIVE-006 pass

    Reload, the page loaded again with the files in the browser's cache: R starts again, gives the same answers, and less comes over the network than on the first visit; megabytes, requests and seconds are measured.

    • pass browser RCON-LIVE-006: reload, the page loaded again with the files cached: R starts again and gives the same answers (#3)
  51. RCON-LIVE-007 pass

    Warm, R already running in the page: a repeated call makes no request and takes less time than the first result; its seconds are measured.

    • pass browser RCON-LIVE-007: warm, R already running: a repeated call makes no request (#3)
  52. RCON-LIVE-008 pass

    The R check page holds at a 390-pixel-wide viewport with no horizontal scroll, with its results shown.

    • pass browser RCON-LIVE-008: the R check page holds at a 390px-wide viewport with its results shown (#3)
  53. RCON-LIVE-009 pass

    The three measurements are printed in the run's log, attached to the test and written to a file, with the browser, the machine and how sizes were counted.

    • pass browser RCON-LIVE-009: the three measurements are recorded where a reader of the run can find them (#3)
  54. PVAL-FMT-001 pass

    An ordinary p-value is printed to three decimals, after the method's name and before the counts used.

    • pass browser PVAL-FMT-001: a page formats a result from the connection with its method and counts (#2)
    • pass unit formatStatistic: the formatted text PVAL-FMT-001: an ordinary p-value is shown to three decimals with its method and counts (#2)
  55. PVAL-FMT-002 pass

    A p-value below 0.001 is printed as p < 0.001, never as zero or in exponent form.

    • pass unit formatStatistic: the formatted text PVAL-FMT-002: a small p-value is shown as p < 0.001, never as zero (#2)
  56. PVAL-FMT-003 pass

    A p-value that would round to 1.000 is printed as p > 0.999.

    • pass unit formatStatistic: the formatted text PVAL-FMT-003: a p-value that would print as 1.000 is shown as p > 0.999 (#2)
  57. PVAL-FMT-004 pass

    Counts are printed for each group by name, or as one total.

    • pass unit formatStatistic: the formatted text PVAL-FMT-004: counts are printed for each group, or as one total (#2)
  58. PVAL-RULE-001 pass

    A p-value whose result names no method is refused: the text says so and prints no number.

    • pass unit formatStatistic: the rules PVAL-RULE-001: a p-value with no method named is refused, and no number is printed (#2)
  59. PVAL-RULE-002 pass

    A p-value whose result gives no counts is refused: the text says so and prints no number.

    • pass unit formatStatistic: the rules PVAL-RULE-002: a p-value with no counts is refused, and no number is printed (#2)
  60. PVAL-RULE-003 pass

    A result is labelled exploratory, and unadjusted unless the result names an adjustment, which is then named.

    • pass unit formatStatistic: the rules PVAL-RULE-003: a result is labelled exploratory and unadjusted unless an adjustment is named (#2)
  61. PVAL-RULE-004 pass

    The text never contains a star or the word significant, however small the p-value.

    • pass unit formatStatistic: the rules PVAL-RULE-004: no stars and never the word significant, however small the p-value (#2)
  62. PVAL-RULE-005 pass

    Where R gave a reason in place of a number, such as a group too small to test, the reason is printed and no number is.

    • pass unit formatStatistic: the rules PVAL-RULE-005: a group too small to test shows the reason in place of a number (#2)
  63. PVAL-RULE-006 pass

    A p-value that is not a number from 0 to 1 is refused, not repaired.

    • pass unit formatStatistic: the rules PVAL-RULE-006: a p-value that is not a number between 0 and 1 is refused, not repaired (#2)
  64. PVAL-RULE-007 pass

    The formatter computes nothing: the same result always gives the same text, and the result is left unchanged.

    • pass unit formatStatistic: the rules PVAL-RULE-007: the same result always formats to the same text, and the result is not changed (#2)
  65. PVAL-RULE-008 pass

    A reason that already says the result was not computed is printed as it is, with the counts after it, so that "not computed" is said once.

    • pass unit formatStatistic: what R declined, and what R could not do PVAL-RULE-008: a reason that already says the result was not computed is printed as it is, and "not computed" is said once (#16)
  66. PVAL-RULE-009 pass

    A result R marked as an error is printed as R's message, said to be an error, with the counts where R knew them and no number.

    • pass unit formatStatistic: what R declined, and what R could not do PVAL-RULE-009: a result R marked as an error is printed as R’s message, said to be an error, with no number (#16)
  67. PVAL-RULE-010 pass

    An adjustment R names by its p.adjust method is printed by its usual name, holm as Holm and BH as Benjamini-Hochberg; any other name is printed as given.

    • pass unit formatStatistic: what R declined, and what R could not do PVAL-RULE-010: an adjustment R names by its p.adjust method is printed by its usual name, and any other name as given (#16)
  68. PVAL-EST-001 pass

    An estimate is printed with its name, what it is an estimate of, and its interval with the level R gave, each number to four significant figures; an estimate with no interval is printed without one.

    • pass unit formatEstimate: an estimate and its interval PVAL-EST-001: an estimate is printed with its name, what it is an estimate of, and its interval with the level R gave, to four significant figures (#16)
  69. PVAL-EST-002 pass

    An estimate with no name or no finite number, or with an interval that has a part missing, is refused, and no number is printed in its place.

    • pass unit formatEstimate: an estimate and its interval PVAL-EST-002: an estimate with no name or no number, or with half an interval, is refused and nothing is printed in its place (#16)
  70. PVAL-MED-001 pass

    A median survival time is printed with what it is a median of and its interval with the level R gave, to four significant figures; a median or a bound R did not reach reads not reached.

    • pass unit formatMedian: a median survival time PVAL-MED-001: a median is printed with what it is a median of and its interval, to four significant figures, and a median or bound R did not reach reads not reached (#61)
  71. PVAL-MED-002 pass

    A median with no name, a part that is neither a number nor missing, or no level for its interval, is refused, and no number is printed in its place.

    • pass unit formatMedian: a median survival time PVAL-MED-002: a median with no name, a value that is neither a number nor missing, or no level for its interval, is refused, and no number is printed in its place (#61)
  72. PVAL-ROW-001 pass

    One comparison of two groups from a result's rows is formatted by the rules a whole result is held to: its p-value, the adjusted one, comes with its method, the two groups' counts and its label, and is handed over in parts for a table only with them.

    • pass unit formatComparison: one pair of groups from a result’s rows PVAL-ROW-001: a pair’s p-value comes with its method, the two groups’ counts and its adjustment label, by the rules a whole result is held to (#16)
  73. PVAL-ROW-002 pass

    A comparison with no method, no counts or no two groups is refused, and one R could not compute shows R's words and no number.

    • pass unit formatComparison: one pair of groups from a result’s rows PVAL-ROW-002: a pair with no method, no counts or no groups is refused, and one R could not compute shows R’s words and no number (#16)
  74. PVAL-GRP-001 pass

    One group's result from a result's rows is formatted by the rules a whole result is held to: its estimate comes with its interval at the level R gave, or with none where R gave none, and its p-value with its method, the group's count and its label; all are handed over in parts for a table only together.

    • pass unit formatGroup: one group’s result from a result’s rows PVAL-GRP-001: a group’s estimate comes with its interval at the level R gave, and its p-value with its method, the group’s count and its label, by the rules a whole result is held to (#26)
  75. PVAL-GRP-002 pass

    A group's result with no group name, no method, no count, no estimate or half an interval is refused, and one R could not compute shows R's words and no number.

    • pass unit formatGroup: one group’s result from a result’s rows PVAL-GRP-002: a group with no name, no method, no count, no estimate or half an interval is refused, and one R could not compute shows R’s words and no number (#26)
  76. PVAL-PAIR-001 pass

    One pair's result from a correlation matrix's rows is formatted without a p-value: its estimate to four significant figures, its interval at the level R gave, or none where R gave none, and the number of complete pairs; all are handed over in parts for a cell and a table. A p-value on the row is neither read nor printed.

    • pass unit formatPair: one pair’s result from a correlation matrix’s rows PVAL-PAIR-001: a pair’s estimate comes with its interval at the level R gave and its count, in parts for a cell and a table, and with no p-value even where a row carries one (#27)
  77. PVAL-PAIR-002 pass

    A pair's result that does not name its two variables, or has no count, no estimate or half an interval, is refused, and one R could not compute shows R's words with its count and no number.

    • pass unit formatPair: one pair’s result from a correlation matrix’s rows PVAL-PAIR-002: a pair with no two variables, no count, no estimate or half an interval is refused, and one R could not compute shows R’s words with its count and no number (#27)
  78. PVAL-SCREEN-001 pass

    One row of a biomarker screen is formatted by the rules a whole result is held to: its estimate with its interval at the level R gave, or none where R gave none, its unadjusted p-value with its method and counts, each group's for a difference, and its adjusted p-value with the adjustment by name and how many rows it was adjusted across; all are handed over in parts for a table.

    • pass unit formatScreenRow: one row of a biomarker screen PVAL-SCREEN-001: a row’s estimate comes with its interval, its unadjusted p-value with its method and each group’s count, and its adjusted p-value with the adjustment by name and how many rows it covered, in parts for a table (#36)
  79. PVAL-SCREEN-002 pass

    A row with no biomarker, no method, no counts, no estimate, half an interval, no adjustment or no number of rows adjusted across is refused, and one R could not compute shows R's words with its counts and no number.

    • pass unit formatScreenRow: one row of a biomarker screen PVAL-SCREEN-002: a row with something missing is refused, and one R could not compute shows R’s words with its counts and no number (#36)
  80. PVAL-FMT-005 pass

    The README's example prints what formatStatistic prints for desktop R's own Wilcoxon answer, R's method name as R wrote it.

    • pass unit the formatter in the README PVAL-FMT-005: the README’s example prints what formatStatistic prints for desktop R’s own Wilcoxon answer, R’s method name as R wrote it (#49)

Tests run with every module

89 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 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/r-connection/evidence.json