# test

An assessment method that exercises assessment objects under specified conditions to compare actual with expected behavior and evaluate control effectiveness.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## AI Agent Governance: Why It Belongs in Your Platform

DevFeed: [AI Agent Governance: Why It Belongs in Your Platform](<https://devfeed.tech/articles/ai-agent-governance-why-it-belongs-in-your-platform-31420.md>)

Original publisher: [Read original article](<https://www.harness.io/blog/governance-is-the-platform-problem-worth-solving>)

Author: Prateek Mittal

Published: 2026-09-16T20:28:57.610955Z

Content type: article

Language: en

Sources: [Harness Blog](<https://devfeed.tech/sources/harness-blog.md>)

Topics: [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [observability](<https://devfeed.tech/topics/observability.md>), [audit](<https://devfeed.tech/topics/audit.md>), [test](<https://devfeed.tech/topics/test.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Monitoring](<https://devfeed.tech/topics/monitoring.md>), [pull-requests](<https://devfeed.tech/topics/pull-requests.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-agent](<https://devfeed.tech/tags/ai-agent.md>), [audit](<https://devfeed.tech/tags/audit.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [governance](<https://devfeed.tech/tags/governance.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [observability](<https://devfeed.tech/tags/observability.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

Engineering leaders from Yelp, Platformable, and Harness argue that AI agent governance must be automated, continuously enforced, and built into the platform rather than left to policy documents. The article discusses audit trails, agent-to-agent access controls, experiment tracking, testing, latency monitoring, rollback paths, and observability for agent-driven changes.

### Source excerpt

Engineering leaders from Yelp, Platformable, and Harness explain why AI agent governance has to be built into the platform, not a policy doc. | Blog

## The Autonomous Dumbledore

DevFeed: [The Autonomous Dumbledore](<https://devfeed.tech/articles/the-autonomous-dumbledore-27368.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/autonomous-dumbledore.htm>)

Author: Khan Academy

Published: 2016-04-25T22:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [API](<https://devfeed.tech/topics/api.md>), [Job](<https://devfeed.tech/topics/job.md>), [test](<https://devfeed.tech/topics/test.md>), [maintenance](<https://devfeed.tech/topics/maintenance.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [feature](<https://devfeed.tech/tags/feature.md>), [fetch](<https://devfeed.tech/tags/fetch.md>), [job](<https://devfeed.tech/tags/job.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [news](<https://devfeed.tech/tags/news.md>), [running](<https://devfeed.tech/tags/running.md>), [scheduled](<https://devfeed.tech/tags/scheduled.md>), [test](<https://devfeed.tech/tags/test.md>), [tests](<https://devfeed.tech/tags/tests.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

An intern at Khan Academy describes the Autonomous Dumbledore, a system that monitors PSAT score-linking endpoints through recurring tests and automatically enables or disables the related feature based on recent results.

### Source excerpt

By Evy Kassirer When I arrived at Khan Academy to start my internship on the Official SAT Practice ... Read more

## How to upgrade hundreds of React components without breaking production

DevFeed: [How to upgrade hundreds of React components without breaking production](<https://devfeed.tech/articles/how-to-upgrade-hundreds-of-react-components-without-breaking-production-27417.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/upgrade-buttons-links.htm>)

Author: Khan Academy

Published: 2019-09-23T22:00:00Z

Content type: tutorial

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [React](<https://devfeed.tech/topics/react.md>), [Design system](<https://devfeed.tech/topics/design-system.md>), [upgrade](<https://devfeed.tech/topics/upgrade.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [consistency](<https://devfeed.tech/topics/consistency.md>), [test](<https://devfeed.tech/topics/test.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [components](<https://devfeed.tech/tags/components.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [news](<https://devfeed.tech/tags/news.md>), [production](<https://devfeed.tech/tags/production.md>), [react](<https://devfeed.tech/tags/react.md>), [test](<https://devfeed.tech/tags/test.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

This article explains how Khan Academy upgraded hundreds of React buttons and links to components from its Wonder Blocks design system. It describes using a prop-conversion guide, organizing small team-owned changes, deploying often, and validating the migration with detailed test plans and responsive screenshots.

### Source excerpt

By Jangmi Jo Background In 2018, we started renewing our color system using our new shared design system, ... Read more

## Refactoring Should NOT Touch Your Acceptance Tests

DevFeed: [Refactoring Should NOT Touch Your Acceptance Tests](<https://devfeed.tech/articles/refactoring-should-not-touch-your-acceptance-tests-26189.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/refactoring-should-not-touch-your-acceptance-tests>)

Author: Valentina Jemuović

Published: 2026-09-03T06:00:37Z

Content type: opinion

Language: en

Sources: [Optivem Journal](<https://devfeed.tech/sources/optivem-journal.md>)

Topics: [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Pull Request](<https://devfeed.tech/topics/pull-request.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [dsl](<https://devfeed.tech/tags/dsl.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [test](<https://devfeed.tech/tags/test.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

The article argues that a refactoring pull request should not change acceptance tests or their DSL, because doing so changes behavior rather than merely restructuring code.

### Source excerpt

A "refactor" PR that changes the acceptance test or the DSL isn't a refactor -- it's a behavioral change

## Orchestrating Playwright test suites with Temporal for independent retries

DevFeed: [Orchestrating Playwright test suites with Temporal for independent retries](<https://devfeed.tech/articles/stop-restarting-your-tests-35993.md>)

Original publisher: [Read original article](<https://temporal.io/blog/stop-restarting-your-tests>)

Author: Simon Emms

Published: 2026-09-03T00:00:00Z

Content type: article

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Playwright](<https://devfeed.tech/topics/playwright.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [ci](<https://devfeed.tech/topics/ci.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [ci](<https://devfeed.tech/tags/ci.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [retry](<https://devfeed.tech/tags/retry.md>), [temporal-voices](<https://devfeed.tech/tags/temporal-voices.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This article explores using Temporal to orchestrate Playwright end-to-end test suites as independent, durable units of work. The approach allows failed tests to retry independently while preserving progress instead of restarting the entire CI job.

### Source excerpt

Learn how Temporal can orchestrate end-to-end test suites so failed tests retry independently, preserving progress without restarting the entire CI job.

## Auditing an AI setup and keeping key components independent of providers

DevFeed: [Auditing an AI setup and keeping key components independent of providers](<https://devfeed.tech/articles/your-ai-provider-can-change-the-deal-on-you-here-s-the-5-prompt-audit-i-run-to-stay-ready-40087.md>)

Original publisher: [Read original article](<https://natesnewsletter.substack.com/p/switch-ai-providers>)

Author: Nate

Published: 2026-09-02T13:01:35Z

Content type: opinion

Language: en

Sources: [Nate's Substack](<https://devfeed.tech/sources/nate-s-substack.md>)

Topics: [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [audit](<https://devfeed.tech/topics/audit.md>), [prompt](<https://devfeed.tech/topics/prompt.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [audit](<https://devfeed.tech/tags/audit.md>), [plan](<https://devfeed.tech/tags/plan.md>), [prompt](<https://devfeed.tech/tags/prompt.md>), [setup](<https://devfeed.tech/tags/setup.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

The article discusses a $600-plus AI setup, components kept outside individual providers, and a test used to evaluate expensive plans.

### Source excerpt

My $600-plus AI setup, what I keep outside every provider, and the test each expensive plan has to pass.

## Implicit Assertions Are More Readable

DevFeed: [Implicit Assertions Are More Readable](<https://devfeed.tech/articles/implicit-assertions-are-more-readable-28890.md>)

Original publisher: [Read original article](<https://glebbahmutov.com/blog/implicit-assertions-are-more-readable/>)

Author: Gleb Bahmutov

Published: 2026-09-01T04:00:00Z

Content type: tutorial

Language: en

Sources: [Gleb Bahmutov](<https://devfeed.tech/sources/gleb-bahmutov.md>)

Topics: [Cypress](<https://devfeed.tech/topics/cypress.md>), [test](<https://devfeed.tech/topics/test.md>), [API](<https://devfeed.tech/topics/api.md>), [properties](<https://devfeed.tech/topics/properties.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [products](<https://devfeed.tech/tags/products.md>), [properties](<https://devfeed.tech/tags/properties.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

A tutorial on making Cypress API tests more readable by using descriptive assertions, precise value ranges, implicit assertions, and cy-spok for validating nested response objects.

### Source excerpt

Recently I saw a Linkedin post that shows "b

## Product Engineering for PMs, Part 1: Build a SaaS App Without Coding

DevFeed: [Product Engineering for PMs, Part 1: Build a SaaS App Without Coding](<https://devfeed.tech/articles/product-engineering-for-pms-part-1-build-a-saas-app-without-coding-39184.md>)

Original publisher: [Read original article](<https://www.productcompass.pm/p/product-engineering-for-pms>)

Author: Paweł Huryn

Published: 2026-08-31T15:35:45Z

Content type: tutorial

Language: en

Sources: [The Product Compass](<https://devfeed.tech/sources/the-product-compass.md>)

Topics: [Software as a service](<https://devfeed.tech/topics/saas.md>), [Claude Code](<https://devfeed.tech/topics/claude-code.md>), [Supabase](<https://devfeed.tech/topics/supabase.md>), [Browser Automation](<https://devfeed.tech/topics/browser-automation.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [test](<https://devfeed.tech/topics/test.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [browser](<https://devfeed.tech/tags/browser.md>), [build](<https://devfeed.tech/tags/build.md>), [claude](<https://devfeed.tech/tags/claude.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [coding](<https://devfeed.tech/tags/coding.md>), [deploy](<https://devfeed.tech/tags/deploy.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [monetization](<https://devfeed.tech/tags/monetization.md>), [saas](<https://devfeed.tech/tags/saas.md>)

### AI overview

A step-by-step series for PMs and non-coders to design, build, secure, deploy, launch, monetize, analyze, and monitor a commercial SaaS app using Claude Code, Clerk, and Supabase. The case study is AskOne, a live Q&A product, and the article includes prompts, templates, browser automation, and testing workflows.

### Source excerpt

Design, build, secure, and deploy a real multi-tenant SaaS app in 3-4 hours: Claude Code, Clerk, Supabase. No coding. All prompts included.

## Why Developer Feedback Failed to Validate a Photography Tool

DevFeed: [Why Developer Feedback Failed to Validate a Photography Tool](<https://devfeed.tech/articles/the-wrong-room-9454.md>)

Original publisher: [Read original article](<https://joncphillips.com/the-wrong-room/>)

Author: Jon C. Phillips

Published: 2026-08-31T02:08:00Z

Content type: opinion

Language: en

Sources: [Jon C. Phillips](<https://devfeed.tech/sources/jon-c-phillips.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [articles](<https://devfeed.tech/tags/articles.md>), [audience-building](<https://devfeed.tech/tags/audience-building.md>), [code](<https://devfeed.tech/tags/code.md>), [design](<https://devfeed.tech/tags/design.md>), [developer](<https://devfeed.tech/tags/developer.md>), [digital-products](<https://devfeed.tech/tags/digital-products.md>), [evaluation](<https://devfeed.tech/tags/evaluation.md>), [indie-hackers](<https://devfeed.tech/tags/indie-hackers.md>), [launch](<https://devfeed.tech/tags/launch.md>), [music](<https://devfeed.tech/tags/music.md>), [photography](<https://devfeed.tech/tags/photography.md>), [product-engineering](<https://devfeed.tech/tags/product-engineering.md>), [side-projects](<https://devfeed.tech/tags/side-projects.md>), [the-wrong-room](<https://devfeed.tech/tags/the-wrong-room.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

The author reflects on building a photography tool that received warm feedback from developers and technically inclined beta testers but underperformed with the broader photographer audience. The article argues that feedback from people in the builder's existing community can create a biased sample and obscure whether the product solves a problem for typical users.

### Source excerpt

They told me it was clever and asked about the stack, and a few of them shared it around. The reception from other builders was warm in a way that felt like some sort of signal.

## Examining the artifacts job of a Playwright GitLab CI / CD pipeline

DevFeed: [Examining the artifacts job of a Playwright GitLab CI / CD pipeline](<https://devfeed.tech/articles/examining-the-artifacts-job-of-a-playwright-gitlab-ci-cd-pipeline-22416.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/08/examining-artifacts-job-of-playwright.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-08-29T23:19:22Z

Content type: tutorial

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [Playwright](<https://devfeed.tech/topics/playwright.md>), [GitLab](<https://devfeed.tech/topics/gitlab.md>), [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [CI/CD](<https://devfeed.tech/topics/cicd.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [bun-create-playwright](<https://devfeed.tech/tags/bun-create-playwright.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [ci-cd-pipeline](<https://devfeed.tech/tags/ci-cd-pipeline.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [screenshots](<https://devfeed.tech/tags/screenshots.md>), [test](<https://devfeed.tech/tags/test.md>), [trace](<https://devfeed.tech/tags/trace.md>), [videos](<https://devfeed.tech/tags/videos.md>)

### AI overview

This tutorial examines how a Playwright GitLab CI/CD pipeline stores and exposes test artifacts. It explains the playwright-report, test-results, and reports/junit folders and describes generated HTML and JUnit reports, screenshots, videos, and trace reports.

### Source excerpt

You may have noticed that in the GitLab CI / CD Pipeline for our Playwright project, in the .gitlab-ci.yml file, after our scripts has run, in the Test stage, there is a subsection called "artifacts" with certain paths to something called "playwright-report", "test-results", and "reports". The Playwright -> Artifacts -> Reports stage playwright: extends: .bun_playwright stage: test timeout: 30 minutes ... ... artifacts: when: always paths: - playwright-report/ - test-results/ - reports/ reports: junit: reports/junit/results.xml expire_in: 30 days https://gitlab.com/tjmaher/bun-create-playwright/-/blob/main/.gitlab-ci.yml Every time Playwright tests run, it generates proof of the test execution: screenshots capturing the state of the UI when a test failed, video recordings of an entire browser session, HTML and JUnit XML test reports, trace reports showing action logs, network requests. These artifacts, when the tests run locally, are placed by the Playwright Test runner in generated folders, playwright-report and test-results, along with a folder called reports/junit. With this post, we will be examining how this artifacts stage of the GitLab CI/ CD pipeline produces downloadable artifacts we can examine. Playwright-Report: A Playwright Test folderThe Playwright Test runner creates a folder called "playwright-report", if it doesn't already exist, and an HTML file called index.html documenting the completed test run. From Playwright.dev / Test Reporters: "Playwright Test comes with a few built-in reporters for different needs and ability to provide custom reporters. [...] All built-in reporters show detailed information about failures, and mostly differ in verbosity for successful runs. [...] HTML reporter produces a self-contained folder that contains report for the test run that can be served as a web page". The HTML Report is the one that automatically opens after you run your tests locally, or if you are using the node package manager: npx playwright show-report

## Handling Asynchronous Images in Android Screenshot Tests

DevFeed: [Handling Asynchronous Images in Android Screenshot Tests](<https://devfeed.tech/articles/handling-asynchronous-images-in-android-screenshot-tests-24846.md>)

Original publisher: [Read original article](<https://alexzh.com/handling-asynchronous-images-in-android-screenshot-tests/>)

Author: Alex Zhukovich

Published: 2026-08-27T07:41:23Z

Content type: tutorial

Language: en

Sources: [Alex Zhuk - Android development and testing](<https://devfeed.tech/sources/alex-zhuk-android-development-and-testing.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Android](<https://devfeed.tech/topics/android.md>), [test](<https://devfeed.tech/topics/test.md>), [Compose](<https://devfeed.tech/topics/compose.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [asynchronous](<https://devfeed.tech/tags/asynchronous.md>), [junit](<https://devfeed.tech/tags/junit.md>), [screenshot-testing](<https://devfeed.tech/tags/screenshot-testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial explains why asynchronous image loading makes Android screenshot tests unstable or inconsistent. It presents two approaches for deterministic results: injecting fake images with the coil-test library and using Compose inspection mode when the first approach is unavailable.

### Source excerpt

This article is based on a chapter from my book, Mastering Android Screenshot Testing. Modern applications frequently load images asynchronously, which is a common cause of unstable screenshot tests or confusion when you review newly generated screenshots. A test can pass locally and fail on CI, produce a different image

## New things for regular expressions in PostgreSQL (pg\_tre and pg\_re2)

DevFeed: [New things for regular expressions in PostgreSQL (pg\_tre and pg\_re2)](<https://devfeed.tech/articles/new-things-for-regular-expressions-in-postgresql-pg-tre-and-pg-re2-33694.md>)

Original publisher: [Read original article](<https://www.depesz.com/2026/08/25/new-things-for-regular-expressions-in-postgresql-pg_tre-and-pg_re2/>)

Author: depesz

Published: 2026-08-25T18:41:53Z

Content type: tutorial

Language: en

Sources: [select \* from depesz;](<https://devfeed.tech/sources/select-from-depesz.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [expression](<https://devfeed.tech/tags/expression.md>), [extension](<https://devfeed.tech/tags/extension.md>), [extensions](<https://devfeed.tech/tags/extensions.md>), [pg-re2](<https://devfeed.tech/tags/pg-re2.md>), [pg-tre](<https://devfeed.tech/tags/pg-tre.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [re2](<https://devfeed.tech/tags/re2.md>), [regexp](<https://devfeed.tech/tags/regexp.md>), [regular](<https://devfeed.tech/tags/regular.md>), [regular-expressions](<https://devfeed.tech/tags/regular-expressions.md>), [test-data](<https://devfeed.tech/tags/test-data.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>)

### AI overview

This article compares PostgreSQL regular-expression approaches using pg_tre and pg_re2 against built-in matching and pg_trgm. Tests on a large table of query plans find that pg_tre is slower than pg_trgm for exact substring searches but supports fuzzy matching, while pg_re2 performs faster than the tested built-in scan. The author notes that both extensions have limitations and rough edges.

### Source excerpt

Well, truth be told these are not all that new (couple of months), but I finally have gotten around to research it. So, let's see what's what. For starters I need some test data. Luckily, I have explain.depesz.com DB... Extracted all plans to side table, with this structure: =$ \d all_plans Table "public.all_plans" Column | ... Continue reading "New things for regular expressions in PostgreSQL (pg_tre and pg_re2)"

## Keeping Documentation Honest with an OpenAPI Snapshot Diff

DevFeed: [Keeping Documentation Honest with an OpenAPI Snapshot Diff](<https://devfeed.tech/articles/keeping-documentation-honest-with-an-openapi-snapshot-diff-34111.md>)

Original publisher: [Read original article](<https://philipptheserver.com/posts/openapi-docs-contract-test/>)

Author: Philipp Lehmann (philipp.lehmann@gruppe.ai)

Published: 2026-08-25T07:00:00Z

Content type: tutorial

Language: en

Sources: [Philipp Lehmann](<https://devfeed.tech/sources/philipp-lehmann.md>)

Topics: [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [FastAPI](<https://devfeed.tech/topics/fastapi.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Pytest](<https://devfeed.tech/topics/pytest.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [JSON](<https://devfeed.tech/topics/json.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [api-documentation](<https://devfeed.tech/tags/api-documentation.md>), [ci](<https://devfeed.tech/tags/ci.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [fastapi](<https://devfeed.tech/tags/fastapi.md>), [json](<https://devfeed.tech/tags/json.md>), [openapi](<https://devfeed.tech/tags/openapi.md>), [pytest](<https://devfeed.tech/tags/pytest.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The article explains how to keep API documentation aligned with a FastAPI application by generating its OpenAPI schema from the running code, comparing it with a committed snapshot in CI, normalizing the JSON diff, and requiring deliberate snapshot regeneration.

### Source excerpt

FastAPI app.openapi() snapshot test in pytest: fail CI when the live OpenAPI schema drifts from the committed openapi.snapshot.json.

## Designing Libraries and SDKs for Human Developers and Coding Agents

DevFeed: [Designing Libraries and SDKs for Human Developers and Coding Agents](<https://devfeed.tech/articles/sdks-in-an-ai-world-28106.md>)

Original publisher: [Read original article](<https://commonsware.com/blog/2026/08/22/sdks-ai-world.html>)

Author: CommonsWare

Published: 2026-08-22T17:08:47Z

Content type: opinion

Language: en

Sources: [The CommonsBlog](<https://devfeed.tech/sources/the-commonsblog.md>)

Topics: [SDKs](<https://devfeed.tech/topics/sdks.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Agentic development](<https://devfeed.tech/topics/agentic-development.md>), [Documentation](<https://devfeed.tech/topics/documentation.md>), [test](<https://devfeed.tech/topics/test.md>), [Specifications](<https://devfeed.tech/topics/specifications.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [blog](<https://devfeed.tech/tags/blog.md>), [coding-agents](<https://devfeed.tech/tags/coding-agents.md>), [documentation](<https://devfeed.tech/tags/documentation.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [sdks](<https://devfeed.tech/tags/sdks.md>), [specifications](<https://devfeed.tech/tags/specifications.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This opinion article argues that library and SDK authors should support both human developers and coding agents. It recommends clear source-code comments, generated API documentation, robust and runnable test suites, coverage analysis, and language-neutral specifications with conformance tests to clarify intended behavior and support faithful ports.

### Source excerpt

Let's explore how we can succeed with libraries and SDKs at a time when coding agents will be consuming what we create, as will ordinary developers

## How to Configure Playwright Test to run smoke tests, headed tests, and debug versions through scripts in package.json

DevFeed: [How to Configure Playwright Test to run smoke tests, headed tests, and debug versions through scripts in package.json](<https://devfeed.tech/articles/how-to-configure-playwright-test-to-run-smoke-tests-headed-tests-and-debug-versions-through-scripts-in-package-json-22419.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/08/how-to-configure-playwright-test-to-run.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-08-20T02:13:32Z

Content type: tutorial

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [Playwright](<https://devfeed.tech/topics/playwright.md>), [Script](<https://devfeed.tech/topics/script.md>), [Bun](<https://devfeed.tech/topics/bun.md>), [Smoke Tests](<https://devfeed.tech/topics/smoke-tests.md>), [test](<https://devfeed.tech/topics/test.md>), [Package manager](<https://devfeed.tech/topics/package-manager.md>)

Tags: [bun](<https://devfeed.tech/tags/bun.md>), [bun-create-playwright](<https://devfeed.tech/tags/bun-create-playwright.md>), [commands](<https://devfeed.tech/tags/commands.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [install](<https://devfeed.tech/tags/install.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [test](<https://devfeed.tech/tags/test.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

A tutorial on configuring Playwright Test commands in package.json scripts. It demonstrates shortcuts for headed, traced, Chromium, Firefox, WebKit, smoke, debugging, reporting, linting, formatting, and type-checking workflows, and explains using Bun and bunx to run commands.

### Source excerpt

Earlier, we went over how we could create scripts in the package.json file of our Playwright framework to add typechecking, linting, and formatting your code with prettier. Want to see the entire bun-create-playwright project? It is on tinyurl.com/bun-create-playwright! With this post, we will explore how the built-in test runner for Playwright Test can run headed tests, debug versions of tests, and smoke tests. ... and shortcuts for all of these can be set up in the scripts in your package.json! If you are using "bun" as a package manager, as we are in bun-create-playwright, just type out "bun run", a space and then the shortcut such as: bun run test package.json "scripts": { "test": "playwright test", "test:headed": "playwright test --headed", "test:trace": "playwright test --trace on", "test:chromium": "playwright test --project=chromium", "test:firefox": "playwright test --project=firefox", "test:webkit": "playwright test --project=webkit", "test:smoke": "playwright test --project=chromium --grep '@smoke'", "test:flaky": "playwright test --project=chromium --repeat-each=20", "test:ui": "playwright test --ui", "test:debug": "playwright test --debug", "test:failed": "playwright test --last-failed", "test:login": "playwright test tests/login.spec.ts", "test:secure-area": "playwright test tests/secure-area.spec.ts", "report:list": "playwright test --reporter=list", "report:line": "playwright test --reporter=line", "report:dot": "playwright test --reporter=dot", "report:blob": "playwright test --reporter=blob", "report": "playwright show-report", "codegen": "playwright codegen", "lint": "eslint .", "lint:ci": "eslint . --max-warnings 0", "lint:fix": "eslint . --fix", "format": "prettier --write .", "format:check": "prettier --check .", "format:debug": "prettier --check . --log-level debug", "format:diff": "prettier --list-different", "typecheck": "tsc --noEmit" }, bun-create-playwright / package.json Do you need to really set up shortcuts like these? Certainly not! B

## Use compile-time DI checks without losing runtime tests

DevFeed: [Use compile-time DI checks without losing runtime tests](<https://devfeed.tech/articles/use-compile-time-di-checks-without-losing-runtime-tests-23957.md>)

Original publisher: [Read original article](<https://cloud-inject.io/notes/compile-time-di-checks/>)

Published: 2026-08-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Koin - Cloud-Inject.io -Kotzilla](<https://devfeed.tech/sources/koin-cloud-inject-io-kotzilla.md>)

Topics: [test](<https://devfeed.tech/topics/test.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [tests](<https://devfeed.tech/tags/tests.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

The article explains how compile-time dependency injection validation can catch structural problems such as missing definitions, invalid qualifiers, and broken constructor paths before application startup. It emphasizes that runtime tests remain necessary for configuration, parameters, lifecycle behavior, and ownership, and recommends using layered validation.

### Source excerpt

Compile-time dependency validation can catch a missing definition, an invalid qualifier, or a broken constructor path before an application starts. That is valuable. It does not prove that runtime configuration, parameters, or lifecycle behavior are correct. Divide the evidence Let compiler validation answer structural questions: Can the graph resolve this constructor path? Does a binding exist for the requested type and qualifier? Is generated wiring compatible with the declaration? Let tests answer behavioral questions:

## Build a dependency-graph inventory before changing the container

DevFeed: [Build a dependency-graph inventory before changing the container](<https://devfeed.tech/articles/build-a-dependency-graph-inventory-before-changing-the-container-23959.md>)

Original publisher: [Read original article](<https://cloud-inject.io/notes/dependency-graph-inventory/>)

Published: 2026-08-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Koin - Cloud-Inject.io -Kotzilla](<https://devfeed.tech/sources/koin-cloud-inject-io-kotzilla.md>)

Topics: [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Android](<https://devfeed.tech/topics/android.md>), [test](<https://devfeed.tech/topics/test.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [build](<https://devfeed.tech/tags/build.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [graph](<https://devfeed.tech/tags/graph.md>), [process](<https://devfeed.tech/tags/process.md>), [test](<https://devfeed.tech/tags/test.md>)

### AI overview

This tutorial recommends creating a framework-independent dependency-graph inventory before migrating dependency injection. It explains how to document entry points, ownership, implementations, lifetimes, qualifiers, modules, replacement values for tests, and architectural constraints, then validate the design through smaller executable test slices.

### Source excerpt

A dependency-injection migration often starts with framework syntax. That is too late. First describe the graph without using the framework's vocabulary. The inventory should show which objects exist, who owns them, and which runtime fact selects one implementation over another. Start from entry points List application entry points: the Android application, a worker, a navigation destination, a command-line process, and each test fixture. Trace the objects requested at each entry point. Stop the trace at explicit boundaries such as a database driver, HTTP transport, clock, file system, or platform service.

## Keep Kotlin Multiplatform bindings at the platform boundary

DevFeed: [Keep Kotlin Multiplatform bindings at the platform boundary](<https://devfeed.tech/articles/keep-kotlin-multiplatform-bindings-at-the-platform-boundary-23964.md>)

Original publisher: [Read original article](<https://cloud-inject.io/notes/kotlin-multiplatform-module-boundaries/>)

Published: 2026-08-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Koin - Cloud-Inject.io -Kotzilla](<https://devfeed.tech/sources/koin-cloud-inject-io-kotzilla.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [modules](<https://devfeed.tech/topics/modules.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [configuration](<https://devfeed.tech/tags/configuration.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [module](<https://devfeed.tech/tags/module.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [test](<https://devfeed.tech/tags/test.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

A guide to keeping Kotlin Multiplatform dependency bindings at platform boundaries. It recommends defining small capability interfaces in common code, implementing them in platform source sets, organizing modules around capabilities and product features, and testing both shared contracts and real platform bindings.

### Source excerpt

Kotlin Multiplatform makes source-set boundaries visible, but a dependency container can blur them again. A shared module should state a capability such as secure storage, HTTP transport, or local time. The platform source set should supply the implementation. Put contracts where consumers can see them Define the smallest useful interface in common code. Avoid copying a platform API into that interface. A storage contract might expose read, write, and remove; it does not need to expose Android preferences or an Apple keychain type.

## Review a Koin upgrade as a graph change, not a version bump

DevFeed: [Review a Koin upgrade as a graph change, not a version bump](<https://devfeed.tech/articles/review-a-koin-upgrade-as-a-graph-change-not-a-version-bump-23963.md>)

Original publisher: [Read original article](<https://cloud-inject.io/notes/koin-version-upgrade-review/>)

Published: 2026-08-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Koin - Cloud-Inject.io -Kotzilla](<https://devfeed.tech/sources/koin-cloud-inject-io-kotzilla.md>)

Topics: [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [upgrade](<https://devfeed.tech/topics/upgrade.md>), [modules](<https://devfeed.tech/topics/modules.md>), [test](<https://devfeed.tech/topics/test.md>), [Compose](<https://devfeed.tech/topics/compose.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose](<https://devfeed.tech/tags/compose.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [modules](<https://devfeed.tech/tags/modules.md>), [test](<https://devfeed.tech/tags/test.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

This tutorial explains how to review a Koin dependency-injection upgrade as an architecture change rather than a simple version bump. It recommends recording the existing dependency graph, modules, warnings, startup results, and verification output; upgrading mechanisms separately; checking all startup variants; and maintaining tested rollback procedures.

### Source excerpt

Dependency-injection upgrades can change more than API names. Verification behavior, annotation processing, Compose packages, compiler integration, and deprecations can all alter how the graph is built. Treat the upgrade as an architecture change with a defined before-and-after record. Freeze the current graph Before changing versions, save the dependency lock or resolved graph, the list of DI modules, startup smoke-test results, and verification-test output. Record warnings that already exist so a new warning is not confused with old noise.

## Implementing Page Objects in Playwright

DevFeed: [Implementing Page Objects in Playwright](<https://devfeed.tech/articles/implementing-page-objects-in-playwright-22420.md>)

Original publisher: [Read original article](<https://www.tjmaher.com/2026/08/implementing-page-objects-in-playwright.html>)

Author: T.J. Maher (noreply@blogger.com)

Published: 2026-08-16T22:04:38Z

Content type: tutorial

Language: en

Sources: [T.J. Maher](<https://devfeed.tech/sources/t-j-maher.md>)

Topics: [Playwright](<https://devfeed.tech/topics/playwright.md>), [selectors](<https://devfeed.tech/topics/selectors.md>), [test](<https://devfeed.tech/topics/test.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [bun](<https://devfeed.tech/tags/bun.md>), [bun-create-playwright](<https://devfeed.tech/tags/bun-create-playwright.md>), [code](<https://devfeed.tech/tags/code.md>), [gitlab](<https://devfeed.tech/tags/gitlab.md>), [jest](<https://devfeed.tech/tags/jest.md>), [page-object](<https://devfeed.tech/tags/page-object.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [selectors](<https://devfeed.tech/tags/selectors.md>), [test](<https://devfeed.tech/tags/test.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

A tutorial on using Playwright page objects to organize web application tests, centralize selectors, reduce repetition, and simplify maintenance. It compares Playwright Test and Library approaches and demonstrates setting up a login-page object.

### Source excerpt

Picture a login screen, such as The-Internet / Login. On this LoginPage, there is: a heading: Login Page a user name textbox with the label, "Username" a password textbox with the label, "Password" a login button, with the role of a button, and the name of "Login" a flash message that appears if you enter invalid credentials such as "NotAUser" and "NotAPassword". If you successfully log in with "tomsmith" and "SuperSecretPassword!, there is a SecureArea: a heading: "Secure Area" a flash message "You logged into a secure area!" a Logout button. Sure, you could interact with each web element in your test... but what if the username text box locator changes? You would have to update multiple tests every time the element changed. ... Instead, you could place it in a Page Object, something that Playwright handles well! "A page object represents a part of your web application. An e-commerce web application might have a home page, a listings page and a checkout page. Each of them can be represented by page object models. "Page objects simplify authoring by creating a higher-level API which suits your application and simplify maintenance by capturing element selectors in one place and create reusable code to avoid repetition". Using Playwright's Built-In Test Runner? Or Something Else? You may have noticed in https://playwright.dev/docs/pom that there are two different styles of page objects. One for "Test". One for "Library". Test: If you are writing actual Playwright test suites, and Playwright's built in test runner, use the Test section as a guide when creating page objects. Library: If you are integrating Playwright into an existing test framework such as Jest or Cucumber and just want browser automation, instead of having pre-built page fixtures, etc, you can use this format. Setting Up Page Objects Let's review a page object I created for the main login page on my GitLab account for the bun-create-typescript project, tests/pages/LoginPage.ts. The first thing we do is

## Why Two Similar Compiler Cases Cannot Share One Calling Convention

DevFeed: [Why Two Similar Compiler Cases Cannot Share One Calling Convention](<https://devfeed.tech/articles/keleusma-research-spike-when-an-apparent-design-wart-is-a-semantic-boundary-39753.md>)

Original publisher: [Read original article](<https://sgeos.github.io/engineering/compilers/verification/2026/08/07/two_calling_conventions.html>)

Author: Brendan Sechter

Published: 2026-08-07T09:00:00Z

Content type: article

Language: en

Sources: [Brendan A R Sechter's Development Blog](<https://devfeed.tech/sources/brendan-a-r-sechter-s-development-blog.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [interface](<https://devfeed.tech/topics/interface.md>), [Back end](<https://devfeed.tech/topics/backend.md>), [test](<https://devfeed.tech/topics/test.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [backend](<https://devfeed.tech/tags/backend.md>), [case-study](<https://devfeed.tech/tags/case-study.md>), [class](<https://devfeed.tech/tags/class.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [compilers](<https://devfeed.tech/tags/compilers.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [interface](<https://devfeed.tech/tags/interface.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [measurement](<https://devfeed.tech/tags/measurement.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

This compiler backend case study argues that two similar cases cannot be unified when one must report two values through an interface with only one available slot. A counting argument shows that the apparent similarity of nine measured occurrences is irrelevant to the shared interface design. The article also identifies an earlier rule that unnecessarily excluded ten of twenty-four cases.

### Source excerpt

A system had grown two ways of doing what looked like one thing. The obvious move was to tidy them into one. The tidying turns out to be impossible, and the reason it is impossible is the reason the two ways exist. The argument that settles it needs no specialist knowledge and fits in a sentence. One of the two cases has two things to report and only one slot to report them in. Whichever thing the slot is given, the other is lost. The other case has only one thing to report, so the single slot is exactly enough. That is a counting argument, it is decided before any code is written, and it is not the argument an engineer reaches for by default. The engineer's instinct is to look at the cases and ask whether they resemble one another. They did. Every one of the nine measured occurrences had exactly the shape that invited the tidy-up, and the measurement encouraged precisely the wrong conclusion. The resemblance was real and it was irrelevant, because the defect was never in the instances. It was in the interface they would have had to share. This article is about that distinction, which is between evidence about members of a class and evidence about the channel the class must pass through. The second dominates the first and is cheaper to check. The article reports the measurement, the way the measurement pointed the wrong direction, and the argument that settled it. It also reports a rule this author shipped one increment earlier which turns out to be stricter than the property it enforces, excluding ten of twenty-four cases for no reason. No test found that. It surfaced while gathering data for this article. How to read this The general argument is in the opening, in the section called The Argument That Settled It, and in Pattern Extraction. Those three need nothing but attention. The sections between them work the argument through a real case with real numbers, and they use the vocabulary of the trade. Every term is glossed at first use, but a reader who wants the r

## How to Stop or Skip Cypress Test Commands

DevFeed: [How to Stop or Skip Cypress Test Commands](<https://devfeed.tech/articles/can-t-stop-won-t-stop-28877.md>)

Original publisher: [Read original article](<https://glebbahmutov.com/blog/cant-stop-wont-stop/>)

Author: Gleb Bahmutov

Published: 2026-08-07T04:00:00Z

Content type: tutorial

Language: en

Sources: [Gleb Bahmutov](<https://devfeed.tech/sources/gleb-bahmutov.md>)

Topics: [Cypress](<https://devfeed.tech/topics/cypress.md>), [Mocha](<https://devfeed.tech/topics/mocha.md>), [test](<https://devfeed.tech/topics/test.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [command](<https://devfeed.tech/tags/command.md>), [commands](<https://devfeed.tech/tags/commands.md>), [condition](<https://devfeed.tech/tags/condition.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [object](<https://devfeed.tech/tags/object.md>), [products](<https://devfeed.tech/tags/products.md>), [skip](<https://devfeed.tech/tags/skip.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial explains three ways to stop or skip Cypress test execution: using Cypress.stop, skipping the current Mocha test, and skipping the remaining commands in the Cypress command queue. It describes the trade-offs of each approach, including whether later tests run and whether completed commands remain visible.

### Source excerpt

Let's say you have a long-ish Cypress test and you know a place where it might fail. You want to stop / skip the test commands.

## AI-Assisted Techniques for Migrating a Legacy Java Codebase to Rust

DevFeed: [AI-Assisted Techniques for Migrating a Legacy Java Codebase to Rust](<https://devfeed.tech/articles/confidence-techniques-for-guiding-ai-migration-33590.md>)

Original publisher: [Read original article](<https://blog.scottlogic.com/2026/08/04/ai-migration-techniques.html>)

Author: pedwin@scottlogic.com (Paul Edwin)

Published: 2026-08-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Scott Logic](<https://devfeed.tech/sources/scott-logic.md>)

Topics: [migration](<https://devfeed.tech/topics/migration.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [developer tooling](<https://devfeed.tech/topics/developer-tooling.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [migration](<https://devfeed.tech/tags/migration.md>), [rust](<https://devfeed.tech/tags/rust.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The article discusses using AI developer tooling to help migrate a complex, under-tested legacy Java codebase to Rust. It focuses on maintaining confidence in generated code and tests, using Rust's compiler feedback and tooling to guide AI-assisted development.

### Source excerpt

Migrating a legacy codebase of any reasonable complexity has always been challenging, but AI tools have fundamentally changed the economics of the process. Generating code is now cheap and fast, but we still need confidence that the generated code is as good as, or better than, code we'd write ourselves.

## Handling Application States and Retries in Cypress End-to-End Tests

DevFeed: [Handling Application States and Retries in Cypress End-to-End Tests](<https://devfeed.tech/articles/what-needs-to-retry-28904.md>)

Original publisher: [Read original article](<https://glebbahmutov.com/blog/what-needs-to-retry/>)

Author: Gleb Bahmutov

Published: 2026-07-28T04:00:00Z

Content type: tutorial

Language: en

Sources: [Gleb Bahmutov](<https://devfeed.tech/sources/gleb-bahmutov.md>)

Topics: [Cypress](<https://devfeed.tech/topics/cypress.md>), [test](<https://devfeed.tech/topics/test.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [can](<https://devfeed.tech/tags/can.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [errors](<https://devfeed.tech/tags/errors.md>), [flaky](<https://devfeed.tech/tags/flaky.md>), [plugin](<https://devfeed.tech/tags/plugin.md>), [products](<https://devfeed.tech/tags/products.md>), [retry](<https://devfeed.tech/tags/retry.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial explains how to design Cypress end-to-end tests for loading, empty, and error states. It recommends detecting known error states immediately and using in-place retries with cypress-recurse when appropriate, instead of relying only on whole-test retries.

### Source excerpt

Imagine a typical application that loads some data. The app starts in the initial state, starts loading, then one of 3 possible states ar

[Next page](<https://devfeed.tech/topics/test.md?cursor=WyIyMDI2LTA3LTI4VDA0OjAwOjAwKzAwOjAwIiwgIjZmNGYwYmJkLWMyNTUtNDcwZC1iNzk0LWYwZTFlYTI3Njg4NyJd>)