Asking for coverage is a weak question when a model writes or reviews the tests
Four separate reports from one RealWorld journey: 0%, 41%, 46% and 87%. None of them is a verdict that the tests - or a model reviewing those tests - are good.
Four separate reports from one RealWorld journey: 0%, 41%, 46% and 87%. None of them is a verdict that the tests - or a model reviewing those tests - are good.
A green e2e run does not always mean the UI did what you think. Some assertions are already true on a spinner or the wrong tab - before the click changes anything.
Someone reads the ticket and diff and decides what to verify before any suite runs. That time rarely shows in dashboards, but across many PRs it becomes a real weekly cost - often before anyone blames coverage or tooling.


When the pipeline fuels doubt more than a clear verdict, rerun replaces root cause. QA burns attention on noise instead of the change—and a real regression is easy to mistake for one more flake.


See Playwright failures clearly in Azure DevOps: publish test results in a standard format so the pipeline shows what broke, and shape the job so reporting stays useful when a run goes red, alongside the parallel Cypress test-results article.


Run Playwright end-to-end tests on Azure DevOps: prepare the pipeline and host so browsers work reliably, keep your app and API addresses in variables, and follow the same overall flow as the Cypress on Azure article, with a simpler Playwright-side setup.


Spot accidental layout and styling regressions using Playwright screenshots: how reference images work, when to refresh them after intentional changes, and how to tune sensitivity so tests stay trustworthy without endless noise.


One test suite against Chromium, Firefox, and WebKit: how Playwright lets you pick engines from configuration and the command line, and why multi-browser coverage today feels easier than when Cypress was still catching up on Firefox and Edge.


Write tests that survive UI refactors by giving important elements stable hooks instead of long, fragile CSS selectors. The post follows Playwright’s recommended test id style and relates it to the familiar Cypress idea of dedicated data attributes.


AI-powered test case generation applies machine learning to user stories and requirements to suggest stronger scenarios. This post walks through DefectZero, how to improve coverage and automate test design, and how to connect AI-generated cases to frameworks such as SpecFlow and NUnit. For QA engineers and automation leads.


Set a default site address and shared preconditions once, then keep URL checks explicit and predictable. Environment variables split the web app from the API, mirroring the Cypress URLs article with Playwright configuration habits.


Keep Playwright flows readable as the suite grows: compare simple helper functions that describe user steps with a more classic page-object style, and relate both to the long-running Cypress debate between app actions and class-based wrappers.


Exercise a real login form end to end: success, bad password, unknown account, and empty fields, with test data prepared through the backend so each run stays isolated. Pairs with the Cypress login article for a direct comparison.


A friendly on-ramp to Playwright for automating a real browser: install the official test runner, open pages, find elements in a maintainable way, interact with forms, and assert what you see. Uses the same sample app as the Cypress series so you can compare the two tools fairly.


The article discusses the process of automating functional tests of Blazor applications using the Microsoft.AspNetCore.Mvc.Testing library and the Playwright tool. The author presents the implementation steps, from configuring the class that runs the application to writing tests to check the correct operation of the home page and the FAQ section.


December 2024: Copilot Chat is GA. Agents and Workspace stay headlines. Code review is still not GA. The pyramid stays.


November 2024: a narrow GPT / Assistants helper on synthetic QA notes. DevDay 2023 prior art. No client names, no product launch.


October 2024: GPT-4o mini drafts a nightly summary. The quality gate stays on the test runner, not the model. o1 is not the pin.


September 2024: k6 0.53 (stable k6/browser) measures load. Playwright 1.47 stays the functional suite. Load on nightly, not instead of E2E.


August 2024: AxeBuilder 4.9 and toHaveAccessibleName on Playwright 1.46. Not a WCAG certificate and not 2022 visual regression.


July 2024: Testcontainers Cloud after the AtomicJar acquisition. Offload containers from laptop and CI without rewriting the suite or assuming December Docker plans.


June 2024: Copilot Enterprise summaries and PR-Agent / CodeRabbit bots. Autofix is a CodeQL beta, not GA. No Claude 3.5.


May 2024: a vision model describes a PNG. Playwright 1.44 toHaveScreenshot stays the gate. GPT-4o is two days old, not the core.


April 2024: Copilot Chat GA beside a Playwright 1.43 spec. Draft in the sidebar, green from the runner. No Workspace, no GPT-4o.


March 2024: I ask @workspace about several test files. Copilot Workspace is still an early glimpse, not a usable preview. Devin is a headline only.


February 2024: Testim, Mabl, and Healenium predate the hype. Playwright 1.41 has no official self-healing GA. Healing does not fix CI flake.


January 2024: Auto-GPT has been a headline since March 2023. Copilot Chat is GA. A human still merges. No autonomous suite ownership.


December 2023: ChatGPT, GPT-4 and Copilot Chat in preview. The test pyramid remains unchanged. AI drafts but does not own merges. Copilot Chat is still not GA.


November 2023: OWASP Top 10 as a risk map, ZAP baseline as CI smoke, and Burp for manual auth checks. Security basics for QA, not pentesting or AI red teaming.


October 2023: a test plan draft, AC checklists, and a README from a ticket and code. Custom instructions help, but a human publishes. Three deletions.


September 2023: chat, Copilot, and experimental CT speed up writing tests. The pyramid and CI triggers stay. Chat is not yet public beta for every individual.


August 2023: mounting a React component in Playwright 1.37. Still experimental, not GA, not an E2E replacement.


July 2023: flake logs into GPT-4 / turbo. Hypotheses to reproduce, no self-healing, no custom instructions.


June 2023: Chat Completions for fixture JSON. Schema review, no GPT-4 API, no PII.


May 2023: Copilot Chat after the waitlist. Insiders, Nightly, file context. Not GA, not public beta.


April 2023: I review Copilot suggestions in C# tests - assertions, isolation, and invented selectors. Copilot for PRs is waitlisted. No Copilot Chat tutorial.


15 March 2023: GPT-4 in ChatGPT Plus for longer specs and cases. gpt-4 API on the waitlist. In the editor, still only line suggestions, no chat.


February 2023: role, constraints, and output format in ChatGPT. Plus shortens the queue. No API, no GPT-4.


January 2023: ChatGPT in the browser as a test-case scratchpad. Human review, no Plus, no API, no GPT-4.


December 2022 recap: Copilot from preview to GA (ghost text, not chat). Playwright migration starts. 2021 isolation still holds. ChatGPT launched 30 November - a year-end headline, not a year-long tool.


November 2022: Playwright 1.27 toHaveScreenshot versus BackstopJS, Percy, Applitools, and the old Cypress plugin path. No ChatGPT, no LLM screenshot diffing.


The material presents a DI-based approach to integration testing in .NET applications, utilizing the WebApplicationFactory for in-memory testing. It showcases how to implement and switch between different feature implementations using DI, enhancing test stability and dependency isolation.


September 2022: which tests belong on a PR versus nightly. Speed versus confidence after a year of containers. Isolation and parallelism are already on the blog - this post is about triggers.


August 2022: NuGet Testcontainers 2.1.0 and Playwright 1.25 in one YAML (Azure Pipelines or GitHub Actions). Host Docker, not the November 2021 container-job trap.


July 2022: consumer-driven contracts after HTTP stubs. PactNet 4.1.0 (Rust, spec v3) vs WireMock. Pact dates to 2013; what is new is the .NET 4.x stack.


21 June 2022: Copilot is GA at $10/month or $100/year with a 60-day trial. Still inline suggestions, still review before commit. Not chat.


May 2022: scaffolding a Playwright 1.22 project (TypeScript, three browsers, codegen, Trace Viewer). Not a finished Cypress migration.


April 2022: Playwright 1.21 and @playwright/test versus Cypress 9.5.4. Why I start migrating - not a product launch, and Cypress is not dead.


March 2022: Copilot technical preview drafts NUnit/xUnit methods and page objects. Ghost text only; review assertions and locators. Not chat.


February 2022: Copilot is still a waitlisted technical preview. Ghost text in VS Code, Tab and Esc, review every suggestion. Not chat and not GA.


January 2022: organizing C# tests on .NET 6. xUnit 2.4.1 [Fact] and collection fixtures vs NUnit 3.13.2 FixtureLifeCycle. Isolate state before you parallelize.


December 2021 recap: from docker run to Testcontainers on Azure and parallel CI. GPT-3 Completions stay an experiment for fixtures, not a chat product.


How I run DotNet.Testcontainers 1.5.0 on Azure Pipelines ubuntu-20.04 in November 2021: host Docker, the daemon socket, and container-job pitfalls.


October 2021: three layers of test parallelism. NUnit vs xUnit, VSTest on the agent, Azure slices and GitHub Actions matrix. Isolation first.


September 2021: seeded Bogus factories, Respawn 4 checkpoints, Testcontainers and WireMock.Net. Isolation without production dumps.


August 2021 C#/Selenium 3.141 refactor: drop PageFactory, model UI fragments, fixture-scoped WebDriver. Not a Cypress App Actions rewrite.


Using the Polly library for implementing a retry policy in integration tests within .NET projects to address race conditions and enhance test stability. The author provides an example of applying the retry logic to database interaction methods and highlights the importance of careful time frame definition for optimal test execution.


June 2021 experiment: GPT-3 Completions API (davinci) for synthetic JSON fixtures. Waitlist, cost, non-determinism. Not a chat product.


Challenges of managing heavy dependencies like databases for integration tests and introduces TestContainers, a tool used to manage containers for testing purposes. The author demonstrates how to set up and use TestContainers with an MSSQL database in a .NET project, highlighting its simplicity and potential for improving test efficiency.


How I mock HTTP with WireMock 2.28 in May 2021: standalone JAR or the rodolpheche image, stub mappings, and Compose.


How I run Selenium Grid 3 in Docker in March 2021, and what Grid 4 beta-1 images already offer.


How I compose multi-service test environments in February 2021 with docker-compose 1.28, service profiles, and clean teardown.


How I spin up isolated test dependencies on demand with Docker in January 2021 - Engine 20.10, Desktop 3.1, docker run, ports, logs, and container cleanup.


Value of sending automated test results to Slack after the CI build process, outlining a technical solution using PowerShell, Webhooks, and the Slack API. This approach enhances the quality of automated tests and encourages team analysis of test results in various CI environments.


Explains how to set up Cypress test reporting in Azure DevOps pipelines. It outlines the steps to configure test reporting using the JUnit format, ensuring that test failures do not interrupt the pipeline, and provides an overview of the resulting test report features in Azure DevOps, emphasizing the ease of integration and the potential for additional functionalities in future posts.


Discusses the integration of Cypress testing into Azure DevOps for continuous integration. It provides a step-by-step guide on configuring the CI pipeline in Azure DevOps, making necessary script adjustments, handling environment variables, and highlights the importance of testing in the CI process. Additionally, it emphasizes the ease of integration and the significance of applying testing to CI for testers. You can find the code on GitHub for reference.


Concept of visual regression testing, where you compare the expected interface appearance with the actual state during testing to detect defects not caught by traditional regression tests. It explains how to set up visual regression testing using the Cypress framework with the free cypress-image-snapshot plugin, and provides examples of testing the entire screen and specific elements for visual differences, showcasing its effectiveness in detecting even small changes.


Cypress has introduced support for new browsers, Firefox and Microsoft Edge, in its latest update. Despite some initial installation issues, the author successfully updated Cypress and conducted tests on these browsers, noting that the new features are valuable for testing purposes.


The author discusses the implementation of artificial intelligence in Selenium WebDriver test automation, specifically utilizing the test-ai-classifier plugin. They encounter challenges during installation, ultimately achieving success. While the AI-based element recognition shows promise, it currently has limited functionality, and the project's development holds potential for the future of testing.


In this blog post, the author reflects on the ideal test process they aim to achieve in their projects, emphasizing the importance of quick feedback on code changes and the drawbacks of manual testing. They advocate for a balanced approach, combining both automated tests (unit and acceptance tests) with manual tests, and stress the benefits of a Continuous Delivery process for rapid code validation and defect correction.


The author emphasizes the importance of using stable and high-quality selectors in automated tests and advocates for the use of the "data-cy" attribute for this purpose in Cypress. They demonstrate how to add and utilize these attributes in a React project, simplifying selector complexity and enhancing test resilience, providing links to corresponding code changes on GitHub.


In this blog post, the author discusses the importance of proper URL management in automated tests and addresses this issue by using Cypress hooks to centralize URL navigation and configuration settings. They also make improvements to the URL assertion function to ensure accurate testing.


The author discusses the process of refactoring code tests and compares two approaches. App Actions and Page Object Model. They start by implementing App Actions, creating custom commands and functions to make tests cleaner and more organized. Then, they transition to Page Object Model, creating classes to represent pages and managing test actions through these classes. They conclude that both approaches have their benefits and drawbacks, with the choice depending on the project's needs and preferences.


This blog post discusses the implementation of login tests with Cypress on the author's website. It covers four test cases, successful login, incorrect password, not existing user, and empty fields. The author demonstrates how to prepare test data and use the Cypress framework to perform these tests while also addressing issues with the application under test.


The author has shared their technique for creating end-to-end tests using the Cypress tool for applications built on ASP.NET Core and React. They provide step-by-step instructions for setting up Cypress, creating basic tests to visit a website, search for elements, click on them, make assertions, and interact with input fields, highlighting the power of Cypress for testing web applications.


In this introduction to Cypress, the author shares their technique for creating end-to-end tests for a web application built on ASP.NET Core and React. They explain the setup process, including installing Cypress and writing basic tests to visit web pages, search for elements, click on them, and perform assertions. They also provide a link to their repository for further reference and mention their intention to write more tests in future posts.