Repository navigation
test: run the JavaScript of the timeline page in jsdom - #38
Merged
Merged
Conversation
34 tests load template.html with small data and check the days and tabs, downtime, grouped tries, the tables, views, theme, statistics and that data from the logs cannot become markup or a script url. Runs in CI. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The page from #36 had no automated tests for its JavaScript.
tests-js/loads the realraidTimeline.Logic/template.htmlinto jsdom with small hand-made data and checks what the page renders and does (34 tests, Node's built-in test runner, jsdom is the only dependency).Covered: empty / broken data, raid day tabs (order, click, keyboard, url hash), downtime and long breaks, grouped tries with the comparison to the previous one, boss health of wipes, the day strip, dps / mechanics / boons / resurrects tables, view and theme (incl. remembered values), statistics page, icon fallback, and hostile data (names escaped,
javascript:links become#,</script>in the data).I checked that a test fails when the code is broken (replaced
safeUrlby a pass-through).CI
ci.ymlgets Node 24 setup,npm ciandnpm testintests-js. The README has a short "Page tests" section.Not covered
TimelineDataBuilderwrites (seetests-js/page.js); a change to that json has to be mirrored there🤖 Generated with Claude Code