More posts

  1. 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.

  2. 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.


Archive

70 posts

20259 posts

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

202412 posts

202312 posts

  1. 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.

202212 posts

  1. 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.

  2. 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.

202112 posts

  1. 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.

  2. 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.

  3. 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.

20206 posts

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

20197 posts

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.