Mercurial
comparison mrjunejune/test/theme_and_webp_test.js @ 262:0f45474c1b1a
Add cyberpunk JRPG blog browser
Show the latest posts in the JRPG preview and render the full blog archive and sanitized post details in the Inspect modal.
Co-authored-by: Copilot <[email protected]>
| author | MrJuneJune <mrjunejune@users.noreply.github.com> |
|---|---|
| date | Thu, 06 Aug 2026 04:08:45 -0700 |
| parents | b401627fc49e |
| children | ee04e4e69fed |
comparison
equal
deleted
inserted
replaced
| 261:b401627fc49e | 262:0f45474c1b1a |
|---|---|
| 732 true, | 732 true, |
| 733 ); | 733 ); |
| 734 await page.getByRole('button', { | 734 await page.getByRole('button', { |
| 735 name: 'Close destination details', | 735 name: 'Close destination details', |
| 736 }).click(); | 736 }).click(); |
| 737 await page.locator('.jrpg-preview-dialog dialog').waitFor({ state: 'hidden' }); | |
| 738 | |
| 739 await page.getByRole('button', { name: 'Blogs', exact: true }).click(); | |
| 740 await page.waitForFunction(() => | |
| 741 document.querySelectorAll('[data-latest-blog]').length === 4 | |
| 742 ); | |
| 743 assert.match( | |
| 744 await page.locator('[data-work-showcase]').textContent(), | |
| 745 /Websocket Demystified/, | |
| 746 ); | |
| 747 assert.match( | |
| 748 await page.locator('[data-work-showcase]').textContent(), | |
| 749 /Creating Network Library in C/, | |
| 750 ); | |
| 751 await page.locator('[data-latest-blog]').first().click(); | |
| 752 await page.locator('[data-blog-content] h1').waitFor(); | |
| 753 assert.equal( | |
| 754 await page.locator('[data-blog-content] h1').textContent(), | |
| 755 'WebSocket Demystified', | |
| 756 ); | |
| 757 assert.equal( | |
| 758 await page.locator('[data-preview-link]').getAttribute('href'), | |
| 759 '/blog/websocket-demystified', | |
| 760 ); | |
| 761 assert.equal( | |
| 762 await page.locator('[data-blog-content]').evaluate( | |
| 763 article => getComputedStyle(article).fontFamily, | |
| 764 ), | |
| 765 '"Pixel Mplus"', | |
| 766 ); | |
| 767 await page.getByRole('button', { | |
| 768 name: 'Close destination details', | |
| 769 }).click(); | |
| 770 await page.locator('.jrpg-preview-dialog dialog').waitFor({ state: 'hidden' }); | |
| 771 | |
| 772 await page.getByRole('button', { name: /Inspect/ }).click(); | |
| 773 await page.waitForFunction(() => | |
| 774 document.querySelectorAll('[data-blog-entry]').length === 9 | |
| 775 ); | |
| 776 assert.equal(await page.locator('[data-blog-entry]').count(), 9); | |
| 777 await page.locator('[data-blog-entry]').nth(1).click(); | |
| 778 await page.waitForFunction(() => | |
| 779 document.querySelector('[data-blog-content] h1')?.textContent === | |
| 780 'Creating Network Library in C' | |
| 781 ); | |
| 782 assert.equal( | |
| 783 await page.locator('[data-preview-link]').getAttribute('href'), | |
| 784 '/blog/my-seobeo-journey', | |
| 785 ); | |
| 786 await page.getByRole('button', { | |
| 787 name: 'Close destination details', | |
| 788 }).click(); | |
| 737 | 789 |
| 738 await page.evaluate(() => { | 790 await page.evaluate(() => { |
| 739 window.__jrpgStreamEvents = []; | 791 window.__jrpgStreamEvents = []; |
| 740 document.querySelector('mjj-jrpg-shell').addEventListener( | 792 document.querySelector('mjj-jrpg-shell').addEventListener( |
| 741 'mjj-jrpg-stream-event', | 793 'mjj-jrpg-stream-event', |
| 1207 await fetch(`${baseUrl}/sw.js`) | 1259 await fetch(`${baseUrl}/sw.js`) |
| 1208 ).text(); | 1260 ).text(); |
| 1209 for (const source of [home, dogGame, manifest]) { | 1261 for (const source of [home, dogGame, manifest]) { |
| 1210 assert.doesNotMatch(source, /\.png(?:["')]|$)/i); | 1262 assert.doesNotMatch(source, /\.png(?:["')]|$)/i); |
| 1211 } | 1263 } |
| 1212 assert.match(serviceWorker, /v13-turn-resume/); | 1264 assert.match(serviceWorker, /v14-blog-browser/); |
| 1213 assert.match( | 1265 assert.match( |
| 1214 await ( | 1266 await ( |
| 1215 await fetch(`${baseUrl}/public/pwa-register.js`) | 1267 await fetch(`${baseUrl}/public/pwa-register.js`) |
| 1216 ).text(), | 1268 ).text(), |
| 1217 /register\('\/sw\.js', \{ scope: '\/' \}\)/, | 1269 /register\('\/sw\.js', \{ scope: '\/' \}\)/, |