<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Tim Stacey — Field notes</title><description>Field notes on testing and quality engineering by Tim Stacey.</description><link>https://tim.sillysamoyed.com/</link><item><title>Where Test Health Belongs: CI Logs or an Observability Backend</title><link>https://tim.sillysamoyed.com/blog/test-health-ci-logs-vs-observability</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/test-health-ci-logs-vs-observability</guid><description>Your suite emits pass rate and flake count every run, then buries them in a CI log nobody scrolls; export them over OTLP and a dashboard catches the rot.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><category>TestAutomation</category><category>OpenTelemetry</category><category>TestObservability</category><category>CICD</category><category>DevOps</category></item><item><title>Retrying a flaky test deletes the evidence of a real bug</title><link>https://tim.sillysamoyed.com/blog/retries-hide-real-bugs</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/retries-hide-real-bugs</guid><description>A bug that fails one run in four passes CI 99.6 percent of the time under three retries. Quarantine the test instead and keep the signal.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate><category>TestAutomation</category><category>FlakyTests</category><category>CICD</category><category>SoftwareTesting</category><category>DevOps</category></item><item><title>Three caching changes that take 80% off a GitHub Actions build</title><link>https://tim.sillysamoyed.com/blog/github-actions-cache-strategy</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/github-actions-cache-strategy</guid><description>A cached ~/.npm drops a cold Node install from four minutes to thirty seconds, and two more cache changes take the rest of the pipeline down with it.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><category>GitHubActions</category><category>CICD</category><category>DevOps</category><category>SoftwareDevelopment</category><category>TestAutomation</category></item><item><title>My resume site ships behind 460 tests</title><link>https://tim.sillysamoyed.com/blog/resume-site-behind-460-tests</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/resume-site-behind-460-tests</guid><description>I set the direction and Claude Code wrote the code and the tests; 247 unit tests and 213 browser tests are how I trust a site I never hand-wrote.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><category>Astro</category><category>StaticSite</category><category>Playwright</category><category>ContinuousIntegration</category><category>TestAutomation</category></item><item><title>GitHub Actions parallel steps and the matrix jobs you can retire</title><link>https://tim.sillysamoyed.com/blog/github-actions-parallel-steps</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/github-actions-parallel-steps</guid><description>Three matrix jobs for lint, type-check, and unit tests pay three runner boots and an artifact handoff for concurrency that parallel steps fold back into one job.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>GitHubActions</category><category>CICD</category><category>DevOps</category><category>TestAutomation</category><category>SoftwareDevelopment</category></item><item><title>Contract Testing vs End-to-End: Where Integration Bugs Belong</title><link>https://tim.sillysamoyed.com/blog/contract-testing-vs-e2e</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/contract-testing-vs-e2e</guid><description>A contract test catches a renamed field in seconds; a 20-minute E2E suite catches it after booting six services. Put each test where it earns its minutes.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><category>ContractTesting</category><category>Microservices</category><category>APITesting</category><category>TestAutomation</category><category>CICD</category></item><item><title>k6 Script Authoring calibrates load tests to live traffic</title><link>https://tim.sillysamoyed.com/blog/k6-script-authoring-live-telemetry</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/k6-script-authoring-live-telemetry</guid><description>Grafana Assistant reads your telemetry, finds endpoints by real RPS and p95, and generates a k6 script that inherits that profile.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><category>PerformanceTesting</category><category>k6</category><category>Grafana</category><category>TestAutomation</category><category>DevOps</category></item><item><title>When AI can write every test, what ships to CI is the job</title><link>https://tim.sillysamoyed.com/blog/playwright-ai-test-explosion</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/playwright-ai-test-explosion</guid><description>AI-generated Playwright tests flake under 1.5%. The new problem is test explosion, and coverage intent is still yours to define.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><category>Playwright</category><category>TestAutomation</category><category>SoftwareTesting</category><category>AI</category><category>CICD</category></item><item><title>One click to fix a failing GitHub Actions run</title><link>https://tim.sillysamoyed.com/blog/github-copilot-fixes-failing-ci</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/github-copilot-fixes-failing-ci</guid><description>Fix with Copilot puts a cloud agent on the failure: it investigates, pushes a fix, reruns CI, and tags you for review.</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate><category>GitHubActions</category><category>CICD</category><category>TestAutomation</category><category>DevOps</category><category>SoftwareDevelopment</category><category>Playwright</category></item><item><title>90% use AI in the IDE; the pipeline is another story</title><link>https://tim.sillysamoyed.com/blog/ai-cicd-adoption-gap</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/ai-cicd-adoption-gap</guid><description>JetBrains data: daily AI in the editor, almost none in CI/CD. The trust gap closes when AI reduces noise instead of adding it.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><category>CICD</category><category>DevOps</category><category>TestAutomation</category><category>SoftwareDevelopment</category><category>AITesting</category></item><item><title>Bitbucket Agentic Pipelines automates the chores</title><link>https://tim.sillysamoyed.com/blog/bitbucket-agentic-pipelines</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/bitbucket-agentic-pipelines</guid><description>Define an agent block in bitbucket-pipelines.yml, scope it, tie it to an event. It drafts the docs and the coverage gaps; you review.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><category>Bitbucket</category><category>DevOps</category><category>CICD</category><category>TestAutomation</category><category>SoftwareDevelopment</category><category>Playwright</category></item><item><title>Playwright 1.59 turns failures into reviewable evidence</title><link>https://tim.sillysamoyed.com/blog/playwright-1-59-healer-agent-ci</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/playwright-1-59-healer-agent-ci</guid><description>The 1.59 agents plus screencast and browser.bind shift your job from chasing selectors to reviewing what the Healer did.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><category>Playwright</category><category>TestAutomation</category><category>AITesting</category><category>QA</category><category>CI</category></item><item><title>k6 2.0 moves load-test authoring into the CLI</title><link>https://tim.sillysamoyed.com/blog/k6-2-ai-performance-testing</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/k6-2-ai-performance-testing</guid><description>Grafana previewed k6 2.0 at GrafanaCON 2026: AI authoring in the CLI, an MCP server, and a Playwright-to-k6 converter.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>PerformanceTesting</category><category>TestAutomation</category><category>k6</category><category>Grafana</category><category>AI</category></item><item><title>The locator tax nobody puts in the budget</title><link>https://tim.sillysamoyed.com/blog/playwright-mcp-locator-tax</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/playwright-mcp-locator-tax</guid><description>Broken-test triage is a staffing decision disguised as a process one. Here is the cost, and where AI self-healing pays it back.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>EngineeringLeadership</category><category>SoftwareEngineering</category><category>TestAutomation</category><category>DevProductivity</category><category>QualityAssurance</category></item><item><title>Playwright agents and the new QA skills gap</title><link>https://tim.sillysamoyed.com/blog/playwright-ai-agents</link><guid isPermaLink="true">https://tim.sillysamoyed.com/blog/playwright-ai-agents</guid><description>Playwright v1.56 put a Planner, Generator, and Healer in the test runner. The interesting part is what it asks of the engineers who own the suite.</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate><category>Playwright</category><category>SoftwareTesting</category><category>AI</category><category>TestAutomation</category><category>QualityAssurance</category></item></channel></rss>