Repository navigation
E2E Test Expansion - #475
CGBassPlayer merged 38 commits into
Conversation
Feels asthough we don't need to iterate over EVERY episode, but only 1 seems almost too restrictive and could make dangerous assumptions (i.e. if $latest_episode is OK, they're all OK!). Suggestion: testing the latest 5 episodes and the oldest 5 episodes?
Maybe this is a helpful starting point? #378 (comment) |
Do you think 5 newest across all shows or per show? Also I would advocate for the possibility of picking a specific set of episodes that we should test because not all episodes have guests and I want make sure the Guests section of the episode page is check every time when E2E is run. |
|
great points @CGBassPlayer !
|
I think that LUP 434 is a great candidate and one I use when working on the episode page layout |
|
Also, I've listed out a bunch of other things/info here: #286 (comment) You've got most of it with your initial comment for this PR, but just figured I'd toss it in to help with some of the things like mocking the request. |
Also, here are some episodes that were particularly tricky from the scrapers perspective. We might want to include those as well: |
|
So I managed to find a way to build the urls for the episodes we want. I grabs the 5 oldest, and 5 newest episodes per show as well as a whatever we populate in a dictionary in the file. I will look through to see what other edge cases in the issues @elreydetoda pointed out. But the part I think would be the hardest is over. Testing time locally took like 7 minutes through the first run, looking at GH Actions it seems to have taken only 30 seconds. |
|
BTW @CGBassPlayer, once this stuff gets merged: ChanceM#1 We'll have the live page indicator + mocking (mainly just intercepting the live request and responding with an event and not actual mocking) taken care of. |
a0877ed to
671c8d6
Compare
|
Not sure why they PR closed when I pulled the latest changes in... My best guess would be because I rebased my changes on top and so the commit history for my branch has changed? No totally sure. But seems like it good again |
…pisode content - pytest.ini: -n auto, --color=yes, register 'episodes' marker - Makefile: dev-tests target (hugo serve --disableFastRender) so pages are pre-rendered and parallel workers don't time out on first render - e2e.yml: PRs run -m 'not episodes' unless they change episode content/templates
…ge tests - Sample: 5 oldest + 5 newest per show (by date) plus edge-case episodes - Fix tab-title regex that matched any title (unescaped |) - Player, support/subscribe, header image, hosts/guests, sponsors, tags, body links
Separate ACTIVE_SAMPLE / ARCHIVED_SAMPLE sizes (shows with active = true) so they can be tuned independently.
Previously episode tests ran only when a PR touched a fixed list of paths, so Hugo/config/CSS/base-layout changes skipped them. Now any path not on the SAFE list runs them.
…y, picks, feeds and meta
…ix default og:image
…flow narrow phones
…ays upload screenshots
Note
#1155 (test dependency upgrade) is built on this PR. Merge this first.
With agents become more and more popular, I figured its more important than ever to add a large suite of tests to the website.
closes #286
fixes #230
<audio>when there's nopodcast_file)/show/lists exactly the active shows/archive/lists exactly the archived showsdirect_linksentry insubscribe.md, with its icon fromdata/podcast_player.json&,-,+,#,., curly quotes, emoji)/tags/lists the tag with the right episode count, and its tag page lists those episodes/people/links to a page that existssponsors.lookbackdays), with the right sponsor linksdirect_linkor its own pagedirect_link(IRC, Matrix, Mumble, Picks) loaddata/picksfile, with its link and episode badgesconfig.toml, and "Edit this page on GitHub" points at the page's sourcesitemap.xmllists the core pages, every show, and every episodeindex.xmlis valid RSS 2.0, newest first, starting at the newest episode/llms.txtstructure; Shows section matches the navbar; every show listed in the right section with its episode count and RSS link/llms-full.txthas no front matter or HTML escapingllms.txtandepisodes.json(all 8 shows) match the episode files incontent/index.md) for shows, sampled episodes, hosts, people, and guests, served astext/markdowndescribedby/ markdownalternatelinks in page headsllms.txtonly exists on show sections (/show/,/hosts/,/guests/return 404)content/membership/index.mdrenders with the same text and href/.well-known/matrixfiles exist with the federation detailsWay to mock JB being live to check live light?Obsolete: the navbar live indicator is no longer loaded since the live page moved to HLS. Replaced by stubbing the HLS stream above.aria-expanded/people/Also in this PR
-n auto) with colored output; screenshots only on failureepisodes. On PRs, CI runs them unless every changed file is on a known-safe list (docs, picks, non-episode content/layouts, other tests). Pushes tomain/developand manual runs always run everythingcontent/,data/and config rather than hardcoded counts, so tests keep passing as content changesmake dev-tests: dev server with--disableFastRender. Plainmake devrenders pages one at a time on first request (~2s each), which makes parallel runs time out. Runmake dev-tests, thenmake tests/people/scrolled sideways at 320px: the 2-per-row grid now only applies from 376px to 599px, and narrower phones get one card per rowlongSwipesRatio: 0.1inmain.jsaria-expandedrole="switch"with an invertedaria-checked; it's now a plain button, since video vs audio isn't on/offog:imagechanged to/images/logo.png; the old/images/jupiter-broadcasting.pngdidn't existactions/checkout(v7),actions/upload-artifact(v7) anddorny/test-reporter(v3)Known failures (marked
xfail, will flag when fixed)/guests/michael/becausecontent/people/michael.mdhastype: guest#link to a URL fragment instead of the tag page (partials/episode/tags.htmldoesn't escape#)&or-link to a double-hyphen URL that doesn't exist (partials/episode/tags.htmlbuilds the URL by hand)/people/linksjoe,jnsgruk,joeresandmichaetunnellto pages that don't exist: they have no episodes. They were re-added by the people scraper; removal is handled separatelySkipped