Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
341 commits
Select commit Hold shift + click to select a range
26d4ec2
Refactor to use validate function from 'uuid' package and remove our …
webstackdev Nov 11, 2025
6a21d79
Implement cookie clear test case that was skipped
webstackdev Nov 11, 2025
89b3402
Move dataSubjectId to client script and refactor unit test for happy …
webstackdev Nov 11, 2025
46f1a7b
Add unit tests to pages/api/_utils files
webstackdev Nov 11, 2025
a566650
Update AI instructions on code organization
webstackdev Nov 11, 2025
4383bd0
Add unit tests to api utils and contract endpoint
webstackdev Nov 11, 2025
14503c4
Delete unused .eslintrc.js, using eslint.config.ts with new flat config
webstackdev Nov 12, 2025
a3db9f9
Spelling adds to workspace
webstackdev Nov 12, 2025
8f7afd1
Add ESLint rule for no process.env and no import.meta.env outside of …
webstackdev Nov 12, 2025
3abbe7d
Add code coverage report to unit test CI workflow, docs deletions, tw…
webstackdev Nov 13, 2025
47b4412
Update deployment doc
webstackdev Nov 13, 2025
0254e20
Reorganize deployment workflow Action
webstackdev Nov 14, 2025
52d7820
Add SSR directive to new API endpoint files
webstackdev Nov 14, 2025
225b20e
Fix cookie modal e2e helper
webstackdev Nov 14, 2025
a90d6ca
Fix syntax mistake in style file
webstackdev Nov 14, 2025
549709b
Update Action dependencies in build-and-test workflow
webstackdev Nov 14, 2025
b49215a
Update Astro dependency in package.json
webstackdev Nov 14, 2025
e5a313b
Update 20 e2e files to use BasePage POM that were using Playwright pa…
webstackdev Nov 15, 2025
86cfa9e
Improve environment determination and site url fetching to be well te…
webstackdev Nov 15, 2025
724c798
Add server-side BuildError
webstackdev Nov 15, 2025
f921d66
Update all e2e tests to use POM static .ini() methods so that we can …
webstackdev Nov 15, 2025
4a9d59f
Remove astro:env call in siteUrlServer.ts since it is not available i…
webstackdev Nov 15, 2025
0893bbe
Change path alias to relative import in siteUrlServer.ts
webstackdev Nov 15, 2025
73c594d
Add error handling and correct env var import to DSAR email handler
webstackdev Nov 15, 2025
d6ea235
Add UnitTestError class
webstackdev Nov 15, 2025
20c23d3
Update test handling in favicon class
webstackdev Nov 15, 2025
c2d4e92
Update test handling in Download class
webstackdev Nov 15, 2025
5af6631
Add custom TestError class, update test files to use it
webstackdev Nov 15, 2025
6cfbcca
Replace raw 'throw new Error' calls in client code to use project Cli…
webstackdev Nov 16, 2025
8b547e6
Use Vercel CLI wrapper for Astro dev server
webstackdev Nov 16, 2025
b332436
Use relative imports in CTAValidator integration files for astro sync…
webstackdev Nov 16, 2025
6aa9b75
Add workspace spellings
webstackdev Nov 16, 2025
2513356
Consistent barrel file imports for client errors and events
webstackdev Nov 16, 2025
e81ab97
Vitest config fix to stringify mocked import.meta.env key
webstackdev Nov 16, 2025
6fb73f8
Use astro:env for RESEND env vars
webstackdev Nov 16, 2025
410c515
Use correct site URL in DSAR file, update tests
webstackdev Nov 16, 2025
eb55806
Fixes to environment detection to handle e2e in client code
webstackdev Nov 16, 2025
18ea392
Fix import from package.json in site url utility
webstackdev Nov 16, 2025
d6cab0d
Use astro:env for Upstash env vars, fix tests
webstackdev Nov 16, 2025
407c7dc
Logic fix for environment detection in contact API endpoint
webstackdev Nov 16, 2025
504d5f0
Add PLAYWRIGHT env var validation
webstackdev Nov 16, 2025
586947a
Use astro:env for Vercel cron secret env var
webstackdev Nov 16, 2025
eb55d95
Fix DSAR test mocks
webstackdev Nov 16, 2025
f167722
Use astro:env mock in rateLimit test
webstackdev Nov 16, 2025
596cdba
Use environment methods in page files, update Props and Params types
webstackdev Nov 16, 2025
26ba943
Update Downloads docs
webstackdev Nov 16, 2025
3b2ce4e
Use environment methods in favicon build script, refactor to use Buil…
webstackdev Nov 16, 2025
e76dc53
Refactor logger to run in tests in addition to prod instead of Sentry
webstackdev Nov 16, 2025
1eada7f
Refactor webmentions touse astro:env/client, update validation of token
webstackdev Nov 16, 2025
3c7c1ab
Update various files to use environment methods, rename sentry env var
webstackdev Nov 16, 2025
26f907e
Update consent files to use environment methods, rename suprabase env…
webstackdev Nov 16, 2025
a8c6e32
Update sentry files to use environment methods, fix docs
webstackdev Nov 16, 2025
7c843c1
Refactor favicon generator to be an Astro integration, remove circula…
webstackdev Nov 17, 2025
8c2be24
Move environment e2e tests into new, more appropriate 14-systems dire…
webstackdev Nov 17, 2025
4d20bb9
Move suprabase admin method into pages/api utils directory and update…
webstackdev Nov 17, 2025
ef28aa1
Update suprabase env var import
webstackdev Nov 17, 2025
080f544
More suprabase env var import updates
webstackdev Nov 17, 2025
411901e
Fix broken import in bootstrap file
webstackdev Nov 17, 2025
6d3a98a
Remove PUBLIC_ prefix from env vars now that we're using validation a…
webstackdev Nov 17, 2025
c148c91
Fix misc import syntax errors
webstackdev Nov 17, 2025
7425123
Remove JSDOM from last two test cases using it in favor of happy-dom.…
webstackdev Nov 17, 2025
6793349
Fix build error involving Vite/Rollup imports of Node libraries, remo…
webstackdev Nov 18, 2025
876ca12
Formatting in vitest.config.ts
webstackdev Nov 18, 2025
945ba91
Update import in build-sider logger
webstackdev Nov 18, 2025
fb70159
Update import in build-sider logger redux
webstackdev Nov 18, 2025
ecd6169
Clean up barrel file imports related to Rollup dragging Astro code in…
webstackdev Nov 18, 2025
81df9d0
Clean up circular dependency issue with imports of handleScriptError …
webstackdev Nov 18, 2025
abcf73d
Remove JSDOM in favor of happy-dom env tag
webstackdev Nov 18, 2025
f939692
Fix errant build output warning from CTA Validator integration
webstackdev Nov 18, 2025
c7423a2
Fix errant build output warning from CTA Validator integration (misse…
webstackdev Nov 18, 2025
98ecfd6
Add missing SSR directives on cron endpoints
webstackdev Nov 18, 2025
44803c0
Add SSR directive in downloads API endpoint
webstackdev Nov 18, 2025
9482d77
Remove environment mocks from RateLimit spec in favor of direct imports
webstackdev Nov 18, 2025
2229aa1
Improve unit test for Social Highlighter and fix compile errors
webstackdev Nov 18, 2025
13a9758
Refactor ThemePicker unit test to node + DOMParser workflow after ref…
webstackdev Nov 18, 2025
ae2b874
Fix compile error in Mastodon unit test
webstackdev Nov 18, 2025
8701892
Refactor deprecated substr method, use isUnitTest method from environ…
webstackdev Nov 18, 2025
ae605e6
Remove unused import in BaseLayout
webstackdev Nov 18, 2025
5e7bc1d
Add ApiFunctionError handling in src/pages/api, move Sentry client in…
webstackdev Nov 19, 2025
0454cda
Update src/pages/api files to use new ApiFunctionError class and impo…
webstackdev Nov 19, 2025
73acfc8
Add GDPR consent handling to API endpoints, standardize JSON responses
webstackdev Nov 19, 2025
7e44b82
Refactor Sentry server-side client to SSR API
webstackdev Nov 19, 2025
a3e258a
Update unit tets in src/pages/api after GDPR consent and rate limitin…
webstackdev Nov 19, 2025
0e3e875
Add additional unit test coverage to new code in src/pages/api
webstackdev Nov 19, 2025
5f897c7
Add health check API endpoint to make sure that 'npx astro dev' stand…
webstackdev Nov 19, 2025
31f0231
Add e2e tests for privacy policy and package release custom Astro int…
webstackdev Nov 19, 2025
f7accc0
Fix TS compiler errors in output from 'npx astro check'
webstackdev Nov 19, 2025
ddf2070
Update notes in environment validation file
webstackdev Nov 19, 2025
a76f099
Refactor deprecated wait methods out of e2e tests in favor of POM met…
webstackdev Nov 19, 2025
675c48a
Fix eslint config syntax error
webstackdev Nov 19, 2025
eabf89a
Resolve lint errors
webstackdev Nov 19, 2025
6444b7f
Add E2E test cases for environment API and client files to make sure …
webstackdev Nov 20, 2025
b194011
Move Sentry client initialization for SSR routes from root folder to …
webstackdev Nov 20, 2025
bad591b
Import path updates in src/pages/api
webstackdev Nov 20, 2025
99f3753
Add E2E and unit test for site url utilities
webstackdev Nov 20, 2025
95355f1
Inline GDPR client server-side helper to _logger
webstackdev Nov 20, 2025
02f249d
Move Avatar component to use /server directory, use fixtures for avat…
webstackdev Nov 20, 2025
e785d2e
Move Breadcrumbs component to use /server directory, implement struct…
webstackdev Nov 20, 2025
fc92140
Refactor Button component to use CSS modules instead of string litera…
webstackdev Nov 20, 2025
407c304
Fix CSS lint errors in Callout and CallTOAction Contact, Download, an…
webstackdev Nov 20, 2025
a75b0ed
Fix compiler error in Button test file related to cyclic imports
webstackdev Nov 20, 2025
00704b2
Fix tsc errors
webstackdev Nov 20, 2025
5993c5f
Update unit tests for Newsletter component
webstackdev Nov 20, 2025
d0f8869
Refactor Carousel component to custom web component, update unit test…
webstackdev Nov 21, 2025
1c84be3
Update unit tests for consent banner component, fix e2e tests for the…
webstackdev Nov 21, 2025
d023b3d
Update unit test for consent preferences component, add data selector…
webstackdev Nov 21, 2025
dcea89a
Update data attribute and test assertion for toast in consent prefere…
webstackdev Nov 21, 2025
6a56ce6
Add assertion for type (success / failure) toast in consent preferenc…
webstackdev Nov 21, 2025
fb25f5d
Update units and add e2e tests for contact form, several feature tick…
webstackdev Nov 21, 2025
49fd790
Update ESLint config to constrain custom error classes to appropriate…
webstackdev Nov 21, 2025
efa46a0
Refactor Footer component to be a web component
webstackdev Nov 21, 2025
8c41539
Correct spelling error in suprabase migrations directory
webstackdev Nov 21, 2025
42436a2
Update import in BaseLayout layout for new Footer web component
webstackdev Nov 21, 2025
3e2b05d
Remove error handling from frontmatter in CallToAction/Download compo…
webstackdev Nov 22, 2025
2de32aa
Establish workable pattern for hydrating Lit web components in Vitest…
webstackdev Nov 23, 2025
73ac636
Update dependencies
webstackdev Nov 23, 2025
d2d2b6a
Use CSS Modules in Footer component
webstackdev Nov 23, 2025
bc7d496
Update tests to new pattern in Download Form, move files to correct f…
webstackdev Nov 23, 2025
968bfbc
Update tests to new pattern in Socail Highlighter
webstackdev Nov 23, 2025
11d4495
Move ContactForm to Forms/Contact
webstackdev Nov 23, 2025
4e39061
Update notes in contact page and contact form e2e test files to refer…
webstackdev Nov 23, 2025
d73ced7
Move CustomElement.define call to Astro layout in all existing web co…
webstackdev Nov 23, 2025
7c33c80
Fix webComponent.spec.ts to follow correct model pattern: use Astro C…
webstackdev Nov 23, 2025
0710e73
Committing working model test case before refactor
webstackdev Nov 23, 2025
1825237
Improvements to model test rendering pipeline to work around happy-do…
webstackdev Nov 23, 2025
035dd83
Add Jsdoc description to litRuntime.ts, implement new interface contract
webstackdev Nov 23, 2025
b8cbdf0
Refactor litRuntime.ts to use JSDOM instead of happy-dom
webstackdev Nov 23, 2025
636ed5a
Update Newsletter CTA tests to new pattern
webstackdev Nov 23, 2025
93adec4
Remove deprecated container model test case in Test component
webstackdev Nov 23, 2025
7f4651c
Update Carousel component tests to new pattern
webstackdev Nov 23, 2025
bc5127c
Add eslint config override to allow CSS modules in astro template files
webstackdev Nov 23, 2025
0d93730
Update Footer component tests to new test pattern
webstackdev Nov 23, 2025
91e4b67
Move consent checkbox to Consent folder and rename, udpate tests to n…
webstackdev Nov 23, 2025
3370bf5
Update Consent Banner component tests to new test pattern, refactor t…
webstackdev Nov 24, 2025
17763e1
Update Consent Banner component tests to new test pattern, add consen…
webstackdev Nov 24, 2025
1b8f5bf
Remove test fixture from Consent Banner component test suite
webstackdev Nov 24, 2025
f7c9f60
Fix broken test case for Consent Checkbox test
webstackdev Nov 24, 2025
bb39daa
Move test fixture to a fixturs directory for Consent Checkbox test
webstackdev Nov 24, 2025
af7f470
Refactor Contact Form tests to new webComponent pattern
webstackdev Nov 24, 2025
2be1df2
Refactor Download Form tests to new webComponent pattern
webstackdev Nov 24, 2025
c82fd5a
Canonical Tailwind classes in Header component
webstackdev Nov 24, 2025
6b2d3e2
Remove orphaned file from move of Highlighter to Social/Highlighter
webstackdev Nov 24, 2025
de75113
Fix import error in Forms/Contact blocking build
webstackdev Nov 24, 2025
cc23cd6
Fix errors preventing green build and dev server startup
webstackdev Nov 25, 2025
6c7ddd1
Update Head component with client folder, refactor structured data JS…
webstackdev Nov 25, 2025
e059e32
Use Tailwind theme styles in pages
webstackdev Nov 25, 2025
4f4592d
Refactor Default Hero to be stand alone component
webstackdev Nov 25, 2025
7e59d0e
Add sprite-dts package for strong typing of Schema JSON-LD
webstackdev Nov 25, 2025
b55c364
Refactor Home Hero to be stand alone component
webstackdev Nov 25, 2025
375a5b4
Move icon color css variable from sprites.css to themes.css, rename s…
webstackdev Nov 25, 2025
d1b5a8a
Clean up lint errors in .vscode file for test automation
webstackdev Nov 25, 2025
17d7802
Update dependencies
webstackdev Nov 25, 2025
84e8574
Rename Sprite component to Icon
webstackdev Nov 25, 2025
66f7ab8
Remove manual type file for icon names. It was error prone as it fell…
webstackdev Nov 25, 2025
c8a0cf9
Fix type error in Default Hero component
webstackdev Nov 25, 2025
7a1ae5e
Add e2e test and sample page for Icon component
webstackdev Nov 25, 2025
3b682ed
Add docs, formatting fix, fix error in id attribute for BaseLayout
webstackdev Nov 25, 2025
b707a45
Move hero animation into its own component, update tests
webstackdev Nov 25, 2025
313aeb5
Refactor navigation to client/server folder pattern, move CSS style c…
webstackdev Nov 26, 2025
6a6f4ed
Refactor navigation to Lit web component, update tests to webComponen…
webstackdev Nov 26, 2025
83f5d66
Refactor navigation selections test to Test/webComponents pattern
webstackdev Nov 26, 2025
2bacd1c
Update scripts/bootstrap unit test
webstackdev Nov 26, 2025
56a9e34
Add scripts/api GDPR client unit test
webstackdev Nov 26, 2025
e5b23e9
Add scripts/assertions unit tests
webstackdev Nov 26, 2025
5418b93
Update scripts/elementListener unit test to JSDOM
webstackdev Nov 26, 2025
98d8e11
Update scripts/errors unit tests to JSDOM
webstackdev Nov 26, 2025
d54b03a
Refactor scripts/sentry client init to use store actions instead of d…
webstackdev Nov 26, 2025
b4b0317
Refactor scripts/store files to JSDOM environment unit tests, add mis…
webstackdev Nov 26, 2025
0ef44f2
Refactor scripts/utils files to JSDOM environment unit tests
webstackdev Nov 26, 2025
a70bcc4
Fix implementation error related to setting class on body element for…
webstackdev Nov 26, 2025
d6c5faa
Refactor Testimonials component to Lit web component, update tests to…
webstackdev Nov 26, 2025
7204d26
Fix type error in Testimonials component test fixture
webstackdev Nov 26, 2025
82f59b5
Use client/server folder pattern in ThemePicker component, update tes…
webstackdev Nov 26, 2025
29029a3
Fix timeouts and failing cases in Themepicker E2E test
webstackdev Nov 26, 2025
fed12e8
Update dependencies
webstackdev Nov 26, 2025
52f4619
Run stylelint fix
webstackdev Nov 26, 2025
51a1740
Fix eslint config to allow dot notation in .astro layout files
webstackdev Nov 26, 2025
22402e6
Fix style lint error in navigation CSS module, and implementation err…
webstackdev Nov 26, 2025
e3788d9
Refactor WebMention component to server folder pattern, add unit test
webstackdev Nov 26, 2025
cc6fa55
Fix stylelint rule specific linting error
webstackdev Nov 26, 2025
e2ff791
Update path in themepicker selectors unit test
webstackdev Nov 26, 2025
c8e1240
Fix code lint errors
webstackdev Nov 26, 2025
46832d1
Cleanup last two code lint errors
webstackdev Nov 26, 2025
2eeb656
Refactor of all animation-related components and mobile navigation to…
webstackdev Nov 26, 2025
c13fc05
Move files to implement client folder pattern in Social/Embed component
webstackdev Nov 26, 2025
811ac82
Fix compiler errrors identified by tsc
webstackdev Nov 26, 2025
9aa40e9
Move to client pattern in Social/Embed, refactor to Lit web component…
webstackdev Nov 26, 2025
24dc16d
Move to client pattern in Social/Mastodon
webstackdev Nov 26, 2025
c9d9b65
Implement proper webComponent pattern for Lit web components in Socia…
webstackdev Nov 26, 2025
27f4709
Implement proper webComponent pattern for Lit web components in Socia…
webstackdev Nov 27, 2025
0542a64
Add test for the detector code in Social/Mastodon
webstackdev Nov 27, 2025
168aead
Move Social Cards astro layout to own directory, along with notes on …
webstackdev Nov 27, 2025
b153258
Move NetworkStatus Toast to client directory pattern
webstackdev Nov 27, 2025
2d8174a
Implement proper webComponent pattern for Lit web components in Socia…
webstackdev Nov 27, 2025
3200a25
CSS lint fixes for modules in Social/Shares and highlighter component
webstackdev Nov 27, 2025
278c616
Delete refactored file in Social/Highlighter
webstackdev Nov 27, 2025
0744594
Fix Social/Shares unit test case - navigator not properly mocked in J…
webstackdev Nov 27, 2025
8cfcdb5
Fix bad syntax in CTA validator integration error call in test
webstackdev Nov 27, 2025
4bcaa9b
Fix bad error call in pagetitle helper test
webstackdev Nov 27, 2025
fcdbe3a
Add missing import in bootstrap script test
webstackdev Nov 27, 2025
9673780
Update controller call in animation lifecycle store test
webstackdev Nov 27, 2025
b60b7a0
Update mock in rate limiter test
webstackdev Nov 27, 2025
a563a99
Update mock in api Sentry test
webstackdev Nov 27, 2025
e4ac9a3
Update mock in api DSAR email test
webstackdev Nov 27, 2025
f9c68a3
Update mock in api crone cleanup test
webstackdev Nov 27, 2025
a0a0acc
Add navigation helpers on breadcrumbs e2e component test to stop flak…
webstackdev Nov 27, 2025
7908ae3
Refactor Consent/Preferences to remove modal behavior, update unit an…
webstackdev Nov 27, 2025
56c81a9
Remove debug logging statements from theme picker e2e test
webstackdev Nov 27, 2025
0d7b552
Change all new Error() calls to custom error classes, update linting …
webstackdev Nov 27, 2025
dffd8d2
Implement store persistence e2e tests
webstackdev Nov 27, 2025
32f27b7
Implement social share e2e test
webstackdev Nov 28, 2025
a17850f
Fix breadcrumbs e2e tests
webstackdev Nov 28, 2025
000a586
Tweak to BasePage selectors to fix flaky full suite expectations
webstackdev Nov 28, 2025
0fa529b
Refactor Toasts/NetworkError to Lit web component, update tests
webstackdev Nov 28, 2025
ed34980
Add Toasts/NetworkError e2e test and page fixture
webstackdev Nov 28, 2025
160153e
Update vitest config for src/components to use node environment by de…
webstackdev Nov 28, 2025
087e949
Update structured-data e2e test to remove flaky selection behavior
webstackdev Nov 28, 2025
17a2858
Fix e2e test cases in 01-smoke
webstackdev Nov 28, 2025
d7aa1ad
Update husky pre-commit and pre-push hooks
webstackdev Nov 28, 2025
93a035c
Remove events folder from components/scripts that is now unused after…
webstackdev Nov 28, 2025
3ae221d
Add EvaluationError class to use in evaluate calls in E2E tests
webstackdev Nov 28, 2025
b3c7e84
Refactor test page fixtures in src/pages/testing to all use BaseLayou…
webstackdev Nov 28, 2025
7e60005
Move camelcase lint error suppressions to eslint config
webstackdev Nov 28, 2025
83ed1b1
Remove adhoc manifest.json page, update Vite PWA config, implement PW…
webstackdev Nov 28, 2025
b0b9daa
Ping cron job for keep-alive with Upstash and Suprabase
webstackdev Nov 28, 2025
f63ff02
Remove passing E2E tests from pre-push requirements since workflow ch…
webstackdev Nov 28, 2025
ad66f51
Add handling for offline in consent API fetch calls, remove toast fro…
webstackdev Nov 28, 2025
9b10ae1
Clean up lint errors in new api/cron/cleanup job
webstackdev Nov 28, 2025
bd6903a
Clean up lint errors in new api/cron/cleanup job
webstackdev Nov 28, 2025
f7ca973
Update dependencies
webstackdev Nov 28, 2025
e27b999
Add lit integration to render Lit web component markup included in re…
webstackdev Nov 29, 2025
6dfb4f3
Removed preview script from package.json as astro serve is unsupporte…
webstackdev Nov 29, 2025
050d8f4
Remove preview script from package.json as astro serve is not availab…
webstackdev Nov 29, 2025
0bb2a94
Refactor new PWA service worker registration component
webstackdev Nov 29, 2025
370c58c
Fix import path in PWA service worker registration component
webstackdev Nov 29, 2025
521bc84
Fix race condition in pause() / resume() system for Embla autoplay pl…
webstackdev Nov 29, 2025
3090035
Make Form/Contact survive View Transitions
webstackdev Nov 29, 2025
ed9ef4a
Fix type errors on bug fix in Testimonial and Carousel components rel…
webstackdev Nov 29, 2025
2a5f7ee
Add lint rule for client-only helpers, refactor approach to rules in …
webstackdev Nov 29, 2025
7f9a541
Add lint rule for server-only and api-only helpers
webstackdev Nov 29, 2025
9ecb163
Change Playwright E2E flag from 'DEBUG' to 'CI' so it works on GitHub…
webstackdev Nov 29, 2025
99d008a
Move theme init for page view transitions to critical code path, upda…
webstackdev Nov 29, 2025
5a4391d
Fix refactor to CI from DEBUG in playwright config
webstackdev Nov 29, 2025
f41d9ee
Fix error involving client-side webmention fetching, moved it to serv…
webstackdev Nov 29, 2025
b235366
Fix structured data error causing failures in breadcrumbs and structu…
webstackdev Nov 29, 2025
7eb40e3
Add gate in Pwa/ServiceWorker to run in Playwright test but not on de…
webstackdev Nov 29, 2025
a691149
Add dotenv exec in vitest config after rename of local .env to .env.d…
webstackdev Nov 30, 2025
260e744
Add E2E mock test infrastructure using Docker containers for third-pa…
webstackdev Nov 30, 2025
cdeb3ce
Fix code lint errors
webstackdev Nov 30, 2025
d83bcc8
Update TODO for E2E implementation with new mock container framework
webstackdev Nov 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 3 additions & 13 deletions .cache/pages.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,14 @@
"us-logistics"
]
},
"consent",
"contact",
"cookies",
{
"downloads": [
"api-tool-consolidation-whitepaper",
"identity-security-for-dummies",
"lakehouse-analytics-guide",
"observability-benefits-guide",
"ransomware-recovery-kit"
]
},
"offline",
"privacy",
{
"services": ["create-custom-font-sets", "overview"]
"privacy": ["my-data"]
},
{
"social-shares": ["template"]
"services": ["create-custom-font-sets", "overview"]
},
{
"tags": [
Expand Down
1 change: 0 additions & 1 deletion .clinerules/project-standards.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ Follow the coding standards defined in `.github/instructions/`:
Key rules:

- Use TypeScript exclusively
- Testing with Container API and happy-dom
- Never use manual HTML fixtures
- No apologizing, be direct/concise
- Wait for permission before implementing suggestions
119 changes: 0 additions & 119 deletions .eslintrc.js

This file was deleted.

2 changes: 1 addition & 1 deletion .github/instructions/astro.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ applyTo: "docs/**/*.astro"
- When testing Astro components, use the Astro Container API instead of manual HTML fixtures.
- This ensures tests stay in sync with component changes automatically.
- Reference: Astro Container API Documentation at docs.astro.build/en/reference/container-reference/
- Note: The Container API does not work reliably in jsdom/vitest environments. Use happy-dom instead.
- There is a model component and test demonstrating this pattern in the src/components/Test directory named webComponent.
76 changes: 67 additions & 9 deletions .github/instructions/general.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,85 @@ applyTo: "**"
- Do not use run-astro-dev, always use "npm run dev".
- Always create TypeScript files, not JavaScript files.
- Prefer destructured imports over namespace imports when importing specific functions from modules (e.g., `import { resolve } from 'path'` instead of `import * as path from 'path'`).
- Do not access nanostore observables (e.g., `$consent`) directly from components; expose helper/action methods in `@components/scripts/store` and import those instead.

# Code Organization and Directory Structure

## src/lib Directory Restrictions
- **The src/lib directory is for server-side build code ONLY**
- NO client-side code can go in src/lib (it gets bundled into server-side builds)
- Client-side utilities should go in src/components/scripts/ or appropriate component directories

## API Code Organization
- **API endpoints** go in `src/pages/api/`
- **Code files related to API endpoints** go in `src/pages/api/` and are prefixed with `_` (e.g., `_utils/`, `_contracts/`)
- **API utility files** go specifically in the `_utils/` folder
- **API contract/type files** go in `_contracts/` folder for centralized type definitions

## Mixed Concern Files
- Files that straddle server-side API and client-side concerns (like API client wrappers) require clarification
- **Ask before placing such files** - they may need special handling or alternative organization
- Example: gdpr.client.ts (API client wrapper) - unclear placement due to mixed server/client concerns

# Astro View Transitions Navigation

Components may have behavior dependent on Astro View Transitions navigation events. Choose the appropriate navigation method:

- **Fresh page load**: Use `page.goto(url)` for full browser navigation (no View Transitions, triggers full page lifecycle)
- **Client-side navigation**: Use `navigateToPage('/path')` for in-site navigation with View Transitions (triggers `astro:page-load` and other View Transition events)

Always use the `navigateToPage()` method for client-side navigation - never ad-hoc `click('a[href]')` calls. This maintains centralized control.

When a Playwright-native action (e.g., `page.click()`, `page.fill()`, `page.hover()`) is required, expose it through the shared `BasePage` helpers (e.g., `BasePage.click()`), then call that helper from tests instead of the raw Playwright API. This keeps all browser interactions centrally managed and makes future behavior changes (timeouts, logging, etc.) easier.

# Personality

# Testing Standards

- NEVER use manual HTML strings in test files. They get out of sync with templates and are worse than no test at all.
- Always use Astro's Container API to create fixtures from actual .astro templates.
## Astro Component Testing - Container API (MANDATORY)

- **NEVER use manual HTML strings in test files or fixtures.** They get out of sync with templates and are worse than no test at all.
- **ALWAYS use Astro's Container API** to create fixtures from actual .astro templates. See: https://docs.astro.build/en/reference/container-reference/
- **Test fixtures MUST import actual components**, not duplicate HTML. Example:
```astro
---
import MyComponent from '@components/MyComponent/index.astro'
const { testProp } = Astro.props
---
<MyComponent prop={testProp} />
```
- **Hard-coded HTML fixtures are FORBIDDEN.** If you find yourself writing HTML in a fixture, STOP and use the actual component instead.
- Reference the working example in src/components/Test/container.astro and its test file.
- Use experimental_AstroContainer.create() to instantiate the container.
- Use container.renderToString(Component) to get rendered HTML from actual Astro components.
- For DOM unit testing with Container API: use `// @vitest-environment happy-dom` for better DOM compatibility than jsdom or node.
- Configure Vitest with getViteConfig() from 'astro/config' to support Astro Container API.
- Test files should follow a client.spec.ts naming pattern or similar.
- Fixture files should follow a componentName.fixture.ts naming pattern (e.g., newsletter.fixture.ts).
- Use `// @vitest-environment happy-dom` as the first line of test files that need DOM support with Container API. Never include Vitest directives inside JSDoc comments.
- happy-dom provides proper document, window, and localStorage globals without manual mocking.
- JavaScript loading warnings from happy-dom are silenced in vitest.setup.ts for clean test output.
- Fixture files should follow a componentName.fixture.astro naming pattern (e.g., newsletter.fixture.astro).
- A working example test using the Container API is available at /home/kevin/Repos/Webstack Builders/Corporate Website/astro.webstackbuilders.com/src/components/Test/container.spec.ts

## E2E Testing Standards

- **NEVER hard-code content slugs in e2e tests** (e.g., `/articles/typescript-best-practices`, `/services/web-development`). Content can be deleted or renamed. Always dynamically fetch the first available item from listing pages (articles, services, case-studies, etc.) and navigate to it. This prevents test breakage when content changes.
- **Playwright E2E Tests**: ALWAYS run with `DEBUG=1` environment variable (e.g., `DEBUG=1 npx playwright test`). This prevents the Playwright test runner from launching its own dev server. The user maintains a running dev server for development.
- **NEVER run the full e2e test suite** unless explicitly requested by the user. The full suite is very resource intensive and takes over 10 minutes to run. Only run specific e2e test files when verification is needed (e.g., `DEBUG=1 npx playwright test test/e2e/specific-file.spec.ts`).
- **Playwright E2E Tests**: ALWAYS run with `CI=1` and `FORCE_COLOR=1` environment variables (e.g., `CI=1 FORCE_COLOR=1 npx playwright test`). This prevents the Playwright test runner from launching its own dev server. The user maintains a running dev server for development.
- **NEVER run the full e2e test suite** unless explicitly requested by the user. The full suite is very resource intensive and takes over 10 minutes to run. Only run specific e2e test files when verification is needed (e.g., `CI=1 FORCE_COLOR=1 npx playwright test test/e2e/specific-file.spec.ts`).
- **NEVER start a dev server yourself**. The user runs their own dev server for development. When you need a dev server running, notify the user instead of starting one.

### Astro View Transitions Testing

- **Navigation method matters**: Choose between `page.goto()` and Astro's client-side navigation based on what you're testing:
- Use `page.goto(url)` for testing **fresh page loads** (full browser navigation, no View Transitions)
- Use `BasePage.click()` on navigation links or `BasePage.navigateToPage()` for testing **View Transitions** (client-side navigation within the site) so that all clicks flow through the centralized helpers
- **Wait for page load properly**: Use BasePage's `waitForPageLoad()` method to wait for `astro:page-load` event instead of arbitrary timeouts
- **NEVER use `page.waitForTimeout()`** for waiting on View Transitions - it's unreliable and slows tests. Use event-based waits instead
- **transition:persist directive**: Must be applied directly to HTML elements (including custom elements), not on Astro component wrappers. Example:
```astro
<!-- CORRECT: In component definition -->
<theme-picker transition:name="theme-picker-island" transition:persist>

<!-- WRONG: On component usage -->
<ThemePicker transition:name="theme-picker-island" transition:persist />
```

# Personality
- Do not apologize
- Do not flatter me
Expand Down
28 changes: 28 additions & 0 deletions .github/instructions/testing.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
applyTo: "**/*.spec.ts"
---

# Testing Standards

## Astro Container API (Unit Tests)

- **NEVER use manual HTML strings** - use Astro's Container API with actual .astro templates
- **Test fixtures MUST import actual components**, not duplicate HTML
- Naming: `filename.spec.ts` for tests, `componentName.fixture.astro` for fixtures
- Working example: `src/components/Test/__tests__/webComponent.spec.ts`

## E2E Testing

- **NEVER hard-code content slugs** - fetch dynamically from listing pages
- **Always run with `CI=1` and `FORCE_COLOR=1`** - e.g., `CI=1 FORCE_COLOR=1 npx playwright test test/e2e/file.spec.ts`
- **NEVER run full e2e suite** unless requested - it takes 10+ minutes
- **NEVER start dev server** - user maintains running server
- **Use `BasePage.waitForPageLoad()`** to wait for `astro:page-load` event
- **NEVER use `waitForTimeout()`** - use event-based waits
- **transition:persist**: Apply to HTML elements in component definition, not on component usage

## View Transitions Testing

- `page.goto(url)` = Full page reload (no View Transitions)
- `page.navigateToPage('/path')` = Astro View Transitions (client-side navigation)
- Always use `navigateToPage()` for consistency - never ad-hoc `click('a[href]')`
Loading
Loading