# e2e

Published articles for e2e.

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

## Using acceptance tests to catch regression bugs in legacy code before production

DevFeed: [Using acceptance tests to catch regression bugs in legacy code before production](<https://devfeed.tech/articles/slow-releases-production-bugs-and-you-already-automated-31116.md>)

Original publisher: [Read original article](<https://journal.optivem.com/p/slow-releases-production-bugs>)

Author: Valentina Jemuović

Published: 2026-09-16T07:33:58Z

Content type: tutorial

Language: en

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

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>), [legacy](<https://devfeed.tech/topics/legacy.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [e2e](<https://devfeed.tech/tags/e2e.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [regression](<https://devfeed.tech/tags/regression.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui](<https://devfeed.tech/tags/ui.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

This hands-on article explains why automated unit and end-to-end tests may still allow production bugs in legacy code. It presents acceptance test-driven development (ATDD), where requirements and tests describe the same observable behavior, making coverage clearer and reducing dependence on UI steps.

### Source excerpt

You automated, and manual regression testing is still there. Those two facts have the same cause.

## String Types For E2E Tests

DevFeed: [String Types For E2E Tests](<https://devfeed.tech/articles/string-types-for-e2e-tests-28895.md>)

Original publisher: [Read original article](<https://glebbahmutov.com/blog/string-types-for-e2e-tests/>)

Author: Gleb Bahmutov

Published: 2026-03-21T04:00:00Z

Content type: tutorial

Language: en

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

Topics: [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Code](<https://devfeed.tech/topics/code.md>), [test](<https://devfeed.tech/topics/test.md>), [Exception](<https://devfeed.tech/topics/exception.md>), [Visual Studio Code](<https://devfeed.tech/topics/visual-studio-code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [e2e](<https://devfeed.tech/tags/e2e.md>), [exception](<https://devfeed.tech/tags/exception.md>), [process](<https://devfeed.tech/tags/process.md>), [testing](<https://devfeed.tech/tags/testing.md>), [types](<https://devfeed.tech/tags/types.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

This tutorial explains how TypeScript string template literal types can distinguish formatted identifiers in end-to-end tests. It also shows their limitations for validating phone numbers and demonstrates more precise digit-based string types.

### Source excerpt

Every individual item sold on Mercari.com has an id that looks like m<number>.

## Как мы управляем арсеналом из 500 тестовых стендов: инфраструктурный опыт hh.ru

DevFeed: [Как мы управляем арсеналом из 500 тестовых стендов: инфраструктурный опыт hh.ru](<https://devfeed.tech/articles/500-hh-ru-30660.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/hh/articles/1009596/>)

Author: wlpnnn (hh.ru)

Published: 2026-03-13T05:10:00Z

Content type: article

Language: ru

Sources: [HeadHunter RU](<https://devfeed.tech/sources/headhunter-ru.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [nginx](<https://devfeed.tech/topics/nginx.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [Ubuntu](<https://devfeed.tech/topics/ubuntu.md>), [Ansible](<https://devfeed.tech/topics/ansible.md>)

Tags: [ansible](<https://devfeed.tech/tags/ansible.md>), [docker](<https://devfeed.tech/tags/docker.md>), [e2e](<https://devfeed.tech/tags/e2e.md>), [iac](<https://devfeed.tech/tags/iac.md>), [jira](<https://devfeed.tech/tags/jira.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [nginx](<https://devfeed.tech/tags/nginx.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [qa](<https://devfeed.tech/tags/qa.md>), [redis](<https://devfeed.tech/tags/redis.md>), [tag-7b800b2da0b8](<https://devfeed.tech/tags/tag-7b800b2da0b8.md>), [tag-9653a3ac62a2](<https://devfeed.tech/tags/tag-9653a3ac62a2.md>), [tag-b3a2b40e0fa4](<https://devfeed.tech/tags/tag-b3a2b40e0fa4.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>)

### AI overview

A QA engineer at hh.ru describes the company's infrastructure for managing 500 test stands. The article explains personal and specialized environments, deployment profiles, isolated Ubuntu-based virtual machines, Docker containers, Kubernetes namespaces, and automated testing workflows linked to Jira.

### Source excerpt

Привет! Меня зовут Карина, я QA-инженер в hh.ru. Наша компания растёт, а вместе с ней -- число команд, вовлечённых в разработку и функционал. Появляются новые сервисы, базы данных, очереди. Каждый компонент требует слаженной работы и надёжной поддержки на тестовых стендах. Сегодня мы работаем с гибкой тестовой средой, которую можно настроить под любую задачу. В статье расскажу, как вся эта сложная система выглядит изнутри. Читать далее

## A better way to end-to-end test your webapp

DevFeed: [A better way to end-to-end test your webapp](<https://devfeed.tech/articles/a-better-way-to-end-to-end-test-your-webapp-37612.md>)

Original publisher: [Read original article](<https://swizec.com/blog/a-better-way-to-end-to-end-test-your-webapp>)

Author: hi@swizec.com (Swizec Teller)

Published: 2026-01-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Swizec Teller](<https://devfeed.tech/sources/swizec-teller.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Web app](<https://devfeed.tech/topics/webapp.md>), [computer-use](<https://devfeed.tech/topics/computer-use.md>), [Playwright](<https://devfeed.tech/topics/playwright.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [computer-use](<https://devfeed.tech/tags/computer-use.md>), [e2e](<https://devfeed.tech/tags/e2e.md>), [e2e-testing](<https://devfeed.tech/tags/e2e-testing.md>), [flaky](<https://devfeed.tech/tags/flaky.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [openai](<https://devfeed.tech/tags/openai.md>), [playwright](<https://devfeed.tech/tags/playwright.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

The article proposes an agentic approach to end-to-end testing for web applications. Tests describe user goals, while an agent uses screenshots and browser interactions to achieve and record those goals. Later runs replay the stored actions to check for regressions, reducing test-writing overhead and sensitivity to UI implementation changes.

### Source excerpt

End-to-end tests are the best way to test your webapp, but they're flaky and annoying to write. I'm trying a new agentic approach that fixes the issue.

## Check Data Using Page Objects And Higher Order Functions

DevFeed: [Check Data Using Page Objects And Higher Order Functions](<https://devfeed.tech/articles/check-data-using-page-objects-and-higher-order-functions-28878.md>)

Original publisher: [Read original article](<https://glebbahmutov.com/blog/check-data-in-page-objects/>)

Author: Gleb Bahmutov

Published: 2025-09-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>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [browser](<https://devfeed.tech/topics/browser.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>)

Tags: [advice](<https://devfeed.tech/tags/advice.md>), [backend](<https://devfeed.tech/tags/backend.md>), [browser](<https://devfeed.tech/tags/browser.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [e2e](<https://devfeed.tech/tags/e2e.md>), [html](<https://devfeed.tech/tags/html.md>), [local](<https://devfeed.tech/tags/local.md>), [process](<https://devfeed.tech/tags/process.md>), [server](<https://devfeed.tech/tags/server.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

A tutorial on using Cypress page objects and higher-order functions to validate TodoMVC data in local storage, server responses, and HTML structure.

### Source excerpt

Testers and developers often use page objects to interact with their web applications via DOM elements. Let's create a page object fo

## Diff Feature Flags Before Running Tests

DevFeed: [Diff Feature Flags Before Running Tests](<https://devfeed.tech/articles/diff-feature-flags-before-running-tests-28887.md>)

Original publisher: [Read original article](<https://glebbahmutov.com/blog/diff-feature-flags-before-testing/>)

Author: Gleb Bahmutov

Published: 2025-09-23T04:00:00Z

Content type: tutorial

Language: en

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

Topics: [feature flags](<https://devfeed.tech/topics/feature-flags.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Cypress](<https://devfeed.tech/topics/cypress.md>), [GitHub Actions](<https://devfeed.tech/topics/github-actions.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>)

Tags: [advice](<https://devfeed.tech/tags/advice.md>), [cli](<https://devfeed.tech/tags/cli.md>), [cypress](<https://devfeed.tech/tags/cypress.md>), [e2e](<https://devfeed.tech/tags/e2e.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [json](<https://devfeed.tech/tags/json.md>), [process](<https://devfeed.tech/tags/process.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This tutorial explains how to detect unexpected feature-flag changes before end-to-end tests run. It shows how to save LaunchDarkly flags as JSON, compare current flags with the saved version in GitHub Actions, and update the saved configuration when defaults change.

### Source excerpt

As I explained in my previous blog post on feature flags and testing, you need

## A bit more on Twitter/X's new encrypted messaging

DevFeed: [A bit more on Twitter/X's new encrypted messaging](<https://devfeed.tech/articles/a-bit-more-on-twitter-x-s-new-encrypted-messaging-29091.md>)

Original publisher: [Read original article](<https://blog.cryptographyengineering.com/2025/06/09/a-bit-more-on-twitter-xs-new-encrypted-messaging/>)

Author: Matthew Green

Published: 2025-06-09T18:22:31Z

Content type: article

Language: en

Sources: [Matthew Green](<https://devfeed.tech/sources/matthew-green.md>)

Topics: [End-to-End Encryption](<https://devfeed.tech/topics/end-to-end-encryption.md>), [X (Twitter)](<https://devfeed.tech/topics/twitter.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>), [Security](<https://devfeed.tech/topics/security.md>), [vulnerability](<https://devfeed.tech/topics/vulnerability.md>), [public key](<https://devfeed.tech/topics/public-key.md>), [Ratchet](<https://devfeed.tech/topics/ratchet.md>), [Server](<https://devfeed.tech/topics/server.md>), [passwords](<https://devfeed.tech/topics/passwords.md>), [Meta](<https://devfeed.tech/topics/meta.md>)

Tags: [e2e](<https://devfeed.tech/tags/e2e.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [instagram](<https://devfeed.tech/tags/instagram.md>), [messaging](<https://devfeed.tech/tags/messaging.md>), [messenger](<https://devfeed.tech/tags/messenger.md>), [protocol](<https://devfeed.tech/tags/protocol.md>), [protocols](<https://devfeed.tech/tags/protocols.md>), [public-key](<https://devfeed.tech/tags/public-key.md>), [secret-storage](<https://devfeed.tech/tags/secret-storage.md>), [security](<https://devfeed.tech/tags/security.md>), [signal](<https://devfeed.tech/tags/signal.md>), [technology](<https://devfeed.tech/tags/technology.md>), [vulnerability](<https://devfeed.tech/tags/vulnerability.md>)

### AI overview

This article examines XChat, X's end-to-end encrypted messaging protocol, focusing on its lack of forward secrecy and its server-side storage of user private keys. It explains the Juicebox key-storage design and argues that the security of the system depends heavily on its deployment and server protections.

### Source excerpt

Update 6/10: Based on a short conversation with an engineering lead at X, some of the devices used at X are claimed to be using HSMs. See more further below. Matthew Garrett has a nice post about Twitter (uh, X)'s new end-to-end encryption messaging protocol, which is now called XChat. The TL;DR of Matthew's post ... Continue reading A bit more on Twitter/X's new encrypted messaging ->

## From two manual monolithic deployments a week to 15+ automated deployments a day

DevFeed: [From two manual monolithic deployments a week to 15+ automated deployments a day](<https://devfeed.tech/articles/from-two-manual-monolithic-deployments-a-week-to-15-automated-deployments-a-day-39883.md>)

Original publisher: [Read original article](<https://mende.io/blog/continuous-deployment-for-the-entire-organisation/>)

Author: tobi@techunicorn.builders (Tobias Mende)

Published: 2022-06-11T13:18:00Z

Content type: article

Language: en

Sources: [Tobias Mende](<https://devfeed.tech/sources/tobias-mende.md>)

Topics: [Deployment](<https://devfeed.tech/topics/deployment.md>), [Developer experience](<https://devfeed.tech/topics/developer-experience.md>), [Git](<https://devfeed.tech/topics/git.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [backend](<https://devfeed.tech/tags/backend.md>), [case-study-continuous-deployment-culture-practices-software-testing-technical-leadership-devel](<https://devfeed.tech/tags/case-study-continuous-deployment-culture-practices-software-testing-technical-leadership-devel.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [deployments](<https://devfeed.tech/tags/deployments.md>), [developer-experience](<https://devfeed.tech/tags/developer-experience.md>), [e2e](<https://devfeed.tech/tags/e2e.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [git](<https://devfeed.tech/tags/git.md>), [qa](<https://devfeed.tech/tags/qa.md>)

### AI overview

This article describes how BRYTER moved from two manual monolithic deployments per week to more than 15 automated deployments per day. The change enabled continuous production deployments for most applications and services across roughly 15 teams, using a shared Git repository and staging environment.

### Source excerpt

From two manual monolithic deployments a week to 15+ automated deployments a day We did it. Roughly two years after I joined BRYTER and one year after we started the developer experience team, we finally ended the era of manual deployments for roughly 15 teams.

## Gson failure in end-to-end tests

DevFeed: [Gson failure in end-to-end tests](<https://devfeed.tech/articles/gson-failure-in-end-to-end-tests-27330.md>)

Original publisher: [Read original article](<https://blog.pchudzik.com/202201/gson-fail/>)

Published: 2022-01-23T00:00:00Z

Content type: article

Language: en

Sources: [Paweł Chudzik](<https://devfeed.tech/sources/pawe-chudzik.md>)

Topics: [Gson](<https://devfeed.tech/topics/gson.md>), [Java](<https://devfeed.tech/topics/java.md>), [JSON](<https://devfeed.tech/topics/json.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Jackson](<https://devfeed.tech/topics/jackson.md>)

Tags: [e2e](<https://devfeed.tech/tags/e2e.md>), [enum](<https://devfeed.tech/tags/enum.md>), [gson](<https://devfeed.tech/tags/gson.md>), [jackson](<https://devfeed.tech/tags/jackson.md>), [java](<https://devfeed.tech/tags/java.md>), [json](<https://devfeed.tech/tags/json.md>), [tests](<https://devfeed.tech/tags/tests.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

This article explains that Gson can silently ignore JSON deserialization problems, such as an unknown enum value, allowing end-to-end tests to pass even when an API contract is broken. It contrasts this behavior with Jackson and describes migrating tests from Gson to Jackson.

### Source excerpt

Using Gson in your e2e tests might result in tests passing even when contract is broken. Gson is quite imprecise when it comes to deserializing objects from json. Is there any difference between an enum and a string? Is there any difference between s string and a number? Using Java you might answer: sure there is. Even when talking about JSON you'll answer: yeah there is a difference. But for GSON? Meh whatever. Read more

## Focus Week Case Study: Bringing E2E Tests into the CI Pipeline

DevFeed: [Focus Week Case Study: Bringing E2E Tests into the CI Pipeline](<https://devfeed.tech/articles/focus-week-case-study-bringing-e2e-tests-into-the-ci-pipeline-39905.md>)

Original publisher: [Read original article](<https://mende.io/blog/focus-week-case-study/>)

Author: tobi@techunicorn.builders (Tobias Mende)

Published: 2021-12-25T12:34:00Z

Content type: article

Language: en

Sources: [Tobias Mende](<https://devfeed.tech/sources/tobias-mende.md>)

Topics: [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [Selenium](<https://devfeed.tech/topics/selenium.md>), [test](<https://devfeed.tech/topics/test.md>), [AWS Lambda](<https://devfeed.tech/topics/aws-lambda.md>)

Tags: [aws-lambda](<https://devfeed.tech/tags/aws-lambda.md>), [case-study](<https://devfeed.tech/tags/case-study.md>), [case-study-collaboration-culture-ensemble-programming-team-programming-developer-productivity](<https://devfeed.tech/tags/case-study-collaboration-culture-ensemble-programming-team-programming-developer-productivity.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [e2e](<https://devfeed.tech/tags/e2e.md>), [selenium](<https://devfeed.tech/tags/selenium.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

This case study describes BRYTER's effort to bring Selenium-based end-to-end tests into its CI/CD pipeline. The tests were previously maintained by QA in a separate repository and run manually, with problems including slowness and flakiness. The team identified stabilization, parallel execution using AWS Lambda, closer alignment with production code, and CI/CD integration as key areas of work.

### Source excerpt

Focus Week Case Study: Bringing E2E Tests into the CI Pipeline In my last article, I wrote about focus weeks and how my team is currently doing them at BRYTER. Today, I want to share a case study of our latest focus week.