• Is there anything GitHub Actions cannot do?!

    Writing continuous integration YML scripts is a cumbersome and awkward process. What if there was a better way? GitHub Actions let you write JavaScript code to build, test, and deploy your applications. Even better, you don't have to write actions yourself but reuse the actions written by others. Plus the integration with the GitHub repo security lets your CI code easily contribute back to the repository or trigger other steps.

  • Tips & Tricks For Writing Fast And Maintainable Front-End Tests

    In this talk, I will share my tips and tricks for writing frontend tests that clearly communicate the software's intent. We will look at both the end-to-end and component tests and the fuzzy boundary between those two types of tests. We will look at tricks to ensure the tests do not spuriously flake when running on the CI system. Finally, I will show my trick for making the tests useful to more people outside the QA team; if you believe like I do that the tests are a working description of the current state of the web application, then any discussion and change to that system must take the tests into the account.

  • Test Angular/React/Vue/Svelte Components Without Fear

    Writing tests for your components (be it Angular, React, Vue, or Svelte components) is often a horror show. Your code in (js-dom) darkness, there are dangers behind each action, and the most beautiful tests get banged up beyond recognition when they try to cross into the CI realm. In this talk, I will show how Cypress component testing becomes a ray of hope guiding you toward testing nirvana. These tests remove most framework-specific test code while focusing on how the component behaves on the page. I will use examples from different frameworks to teach everyone how to test the modern front-end code without fear or pain.

  • The Fuzzy Line Between End-to-End And Component Tests

    Recently Cypress Test Runner has released v10 which adds full component testing support. Now you might have a question: when should I write an end-to-end test and when should I use a component test? If a component test runs as a "mini" web application, is it really a limited E2E test? In this talk, I will give my take on drawing the line between the types of tests to write to most effectively confirm the code is doing what it is supposed to do. Presented at QA Global Summit 2022, video at https://youtu.be/jJCDSSVyA9g

  • How We Run A Lot Of End-to-End Tests At Mercari US

    We run a LOT of end-to-end web tests at our company, and making sure the tests are quick and useful is a challenge. In this talk, I describe our approach to running the tests on each pull request, adding new tests, and running tests targeted at each feature area. If you want to see how running 500-600 end-to-end tests works day-to-day, this talk is for you.

  • What Playing Wordle Can Teach Us About Web Testing

    A new online game Wordle has become very popular recently. In the game, you enter five letter words until you match the secret word. The game responds by giving you clues about each letter you have entered. How would you test this online game using an end-to-end test runner like Cypress? Could you solve it using a test? In this presentation, I will show how we can test the game using Cypress most powerful features. Presented at DevReach Boston Sept 2022, watch at https://www.youtube.com/watch?v=CwHciuR5udo

  • HTTP/1, HTTP/2, HTTP/3, HTTP/∞

    I will walk through the history of HTTP, its original design goals, and how they shape the modern Internet. We will look at the current standard, and what is coming tomorrow. Finally, I will answer the question on every web developer's mind: is it better to bundle the JavaScript files, or can HTTP efficiently serve thousands of small source files?

  • Slice And Dice Your End-to-End Tests

    In this talk, Gleb Bahmutov shows how his team at MercariUS is running 500+ end-to-end front-end tests to provide developers with quick quality feedback. The keys to fast test execution are parallelization and running the changed and potentially broken tests first, something modern CIs can do with a little bit of elbow grease. From the overall flow to the individual tests, the presentation shows Gleb's tips & tricks for solid reliable end-to-end testing at scale. Watch the video at https://applitools.com/event/slice-and-dice-your-end-to-end-tests/

  • History and Future of HTTP For Busy Developers

    I will walk through the history of HTTP, its original design goals, and how they shape the modern Internet. We will look at the current standard, and what is coming tomorrow. Finally, I will answer the question on every web developer's mind: is it better to bundle the JavaScript files, or can HTTP efficiently serve thousands of small source files? Presented at CityJS Athens Greece 2022

  • Cypress Is A GREAT Wordle Player

    A new online game Wordle has become very popular recently. In the game, you enter five letter words until you match the secret word. The game responds by giving you clues about each letter you have entered. How would you test this online game using an end-to-end test runner like Cypress? Could you solve it using a test? In this presentation, I will show how we can test the game using Cypress's most powerful features: access to the browser APIs, spying on the network calls, controlling the application clock. Watch at https://youtu.be/4nOI6yGalDA?t=2178

  • Flexible Data Setup & Caching for Cypress End-to-End Tests

    Gleb will introduce you to a very powerful way of creating and re-using data in your Cypress.io end-to-end tests. By re-using objects like users, projects, etc. that are typically very resource-intensive to create, you will make your tests much more efficient, faster, easier to read, and simpler to maintain. The key takeaways from this talk are: - How to measure and understand where your end-to-end tests spend the majority of their time. - How to make parts of the test faster by skipping the user interface and driving the application directly through its HTTP API - How to control the state of the application by resetting it before each spec file and before each individual test - How to make the application tests faster by caching and reusing test data, while keeping the tests independent from each other - The trade-offs between shared backend database vs individual databases for each test agent running in its own container on CI

  • No More CSS Regrets, ... I mean Regressions

    Visual testing is extremely effective at confirming the application works and looks the way it did previously, and that the new commits have not accidentally broken it. In this presentation, I will show how to do visual testing using the Cypress test runner, both at the end-to-end and at the individual component levels. We will also consider the trade-offs of doing image diffing ourselves vs paying for a 3rd party service. Presented at ConFoo CA 2022

  • How We Introduced Automated Web App Testing in A Large Org

    Many organizations struggle with building a reliable set of automated tests for their web applications. Yet a set of manual test plans is not an answer; testing without automation is slow, gives low confidence, and the test results provide little actionable feedback to the developers. In this presentation, I describe how a large company has built a comprehensive automated set of end-to-end test suites after two previous failed attempts. Presented at ConFoo CA 2022

  • Flexible Data Setup And Caching For Cypress.io Tests

    This talk will introduce you to a very powerful way of creating and re-using data in your Cypress.io end-to-end tests. By re-using the expensive to create objects like users, projects, etc. you will make your tests much much faster, easier to read, and simpler to maintain. Presented at QA Global Summit'22

  • How We Introduced Automated Web App Testing in A Large Organization

    Many organizations struggle with building a reliable set of automated tests for their React web applications. Yet a set of manual test plans is not an answer; testing without automation is slow, gives low confidence in the software, and the test results provide little actionable feedback to the developers. Should we just write unit and component tests using Jest? You must be joking - these tests are definitely not enough to ensure the app works. In this presentation, I describe how a large company has built a comprehensive automated set of end-to-end and component test suites after two previous unsuccessful attempts. I will show how to build trust between the QA engineers and front-end developers, how to convince other stakeholders that investing time in testing is important, and how to balance the different types of tests: e2e, component, unit, and API to cover both the happy paths and the edge cases. Presented at React-Next 2021. Video at https://www.youtube.com/watch?v=VlmXhJIIOUo

  • Supercharge Your Cypress Tests With Plugins

    Do you like writing End-to-End tests using Cypress? What if I told you that you can unlock the full power of Cypress by ... writing JavaScript code to extend the built-in Test Runner features? Be able to add more testing features, write shorter tests, have more power at your disposal? Most people only scratch the surface of the web application tests, but if you learn how to use the existing plugins (and there are lots of them!) and write your own can take your tests to the next level.

  • Answers to Your Burning Questions About Testing

    In the pursuit of building rock-solid end-to-end testing suites, there are many variables that need to be decided in order to maintain a consistent testing environment. If left undefined, these variables can lead to endless wasted cycles spent on the effects, rather than simply eliminating the root cause. Presented at EnterpriseNG Dec 2021, video at https://www.youtube.com/watch?v=_7SJ_sMAols

  • How We Introduced Automated Web App Testing in A Large Organization

    Many organizations struggle with building a reliable set of automated tests for their web applications. Yet a set of manual test plans is not an answer; testing without automation is slow, gives low confidence in the software, and the test results provide little actionable feedback to the developers. In this presentation, I describe how a large company has built a comprehensive automated set of end-to-end test suites after two previous unsuccessful attempts. I will show how to build trust between the QA engineers and front-end developers, how to convince other stakeholders that investing time in testing is important, and how to balance the different types of tests to cover both the happy paths and the edge cases.

  • Testing Pyramid Makes Little Sense, What We Can Use Instead

    The testing pyramid - the canonical shape of tests that defined what types of tests we need to write to make sure the app works - is ... obsolete. In this presentation, Roman Sandler and Gleb Bahmutov argue what the testing shape works better for today's web applications. Presented at TestJSSummit 2021, video at https://portal.gitnation.org/contents/testing-pyramid-makes-little-sense-what-we-can-use-instead

  • Not just a blog, but a knowledge warehouse

    This presentation describes my personal journey to "power" blogging. Every time I solve a problem, I describe the solution in a blog post to remind myself the next time I need it how I have done this. Then I describe how I use the Algolia search index to find the blog posts, and how I now scrape the blog posts, the presentation slides, and the YouTube videos too. Presented at Hashnode Open-Source 2021

  • Full End-to-End Testing for Your HTML Email Workflows

    Every time a new user registers for your service, your application probably sends a confirmation email.How does that email look in the user's browser? How does it look on a mobile screen? And most importantly: does it work? In this presentation, I will show the full end-to-end open-source testing procedure for validating HTML emails. We will test the email functionality, accessibility, and visual look and style to ensure that our users are not silently dropping out due to a broken email subsystem. Presented at InfobipShift 2021, video at https://youtu.be/igj8OQhY0Jg

  • Integration Testing for React Native Apps

    My unpopular opinion is that testing is ... important. How do you test your React Native apps? In this presentation, I will show how to run full integrations tests using Cypress while the RN app is running in the browser. This method can cover most of the application's code and be effective at finding logical errors and mistakes when calling the server APIs. Presented at ReactFinland 2021. Find the video at https://www.youtube.com/watch?v=PIxaFbMBez0

  • Book Quotes

    A test deck for practicing scraping slides.

  • The Testing Shapes: Pyramid, Trophy, and Crab

    The testing pyramid - the canonical shape of tests that defined what types of tests we need to write to make sure the app works - is ... obsolete. In this presentation, Roman Sandler and Gleb Bahmutov argue what the testing shape works better for today's web applications. Presented at Mercari Dev meetup.

  • End-to-End Testing for a Real-time Chat Web Application

    In this presentation, I will show how to write realistic end-to-end Cypress tests for a real-time chat web application implemented using WebSockets. We will see how the test runner can act as a second chat user, and how to truly control two test runners to "talk" to each other during the test. Everyone learning to write tests for the modern web can benefit from this presentation. Presented at QA Global Summit V2

  • Cypress Declassified

    Everyone’s talking about Cypress. But they don’t know what they don’t know… Get the inside scoop on Cypress from Distinguished Engineer Gleb Bahmutov. He’ll be joined by Eran Kinsbruner, DevOps Chief Evangelist at Perforce. Together, they’ll dive into how dev teams are testing, learning, and optimizing with one of the fastest-growing front-end automation frameworks. You’ll Learn: - Most advanced features for automating with Cypress. - Best practices for scaling & optimizing with Cypress. - When and how to use Cypress with commercial tools. - What to expect on the roadmap for Cypress.

  • Cypress for Angular Developers

    This presentation discusses how Angular developers can take advantage of Cypress Test Runner to write simple and powerful end-to-end tests. We will look at the custom commands, page objects, using fixtures and mocks, dynamic waits, and migrating from Protractor to Cypress.

  • CommitEd: Introduction to Cypress

    Introduction to Cypress. This 1-hour presentation gives an introduction to the Cypress Test Runner, its architecture, and the problems it is solving. We will cover end-to-end testing, accessing the application’s internal state, component testing, API testing, visual testing, and collecting code coverage from tests. We will also look at network stubbing and the trade-offs between the full stubbing and spying on the network traffic. The presentation will be followed by questions and answers. Video at https://commited.tech/events/session-introduction-to-cypress/

  • Visual Testing using Cypress

    Visual testing is extremely effective at confirming the application works and looks the way it did previously, and that the new commits have not accidentally broken it. In this presentation, I will show how to do visual testing using Cypress test runner, both at the end-to-end and at the individual component levels. We will also consider the trade-offs of doing image diffing ourselves vs paying for a 3rd party service. Video available at https://youtu.be/KX6Xb5oIaH0

  • Testing Web Apps on Every Commit, No Excuses

    In this presentation, Gleb will show how every commit and every pull request can run the full set of realistic end-to-end tests, ensuring the web application is going to work for the user. He will look at the modern CI setup, benefits of clean data environments, and parallelization speed-ups. Anyone looking to learn how awesome the modern automated testing pipeline can be would benefit from this presentation. Presented at BrightTALK 2021

  • Using End-to-end Tests as Documentation

    Keeping the documentation up-to-date with the web application is hard. The screenshots and the videos showing the user how to perform some task quickly fall out of sync with the latest design and logic changes. In this presentation, I will show how to use end-to-end tests to generate the documentation. By keeping the tests in sync with the application, and by running them on every commit, we will update the documentation, ensuring our users never get confused by the obsolete docs. Presented at TestingStage 2021, video at https://youtu.be/H9VqsTZ9NME

  • TDD: Test-Driven Documentation

    If you are working on the web application, and try to document it for the users, what do you do? Do you copy / paste screenshots into the docs? Does your documentation slowly diverge from the application? What if there was a better way? In this talk, I will show how to use the tests to document the web-application behavior, ensuring the docs are always correct. Presented at CityJS 2021

  • slides-dark-mode

    This slides.com deck picks different styles depending on the viewer's OS preference. By default, the deck will have a pink-white background. But if you set your OS to Dark mode, the presentation will switch to the dark background and light text.

  • How cy.intercept Works

    In this presentation, Gleb Bahmutov explains how the new cy.intercept command works to spy or stub network calls from your web application. He will explain how the intercept works under the hood and how to avoid several common testing problems. Everyone writing Cypress tests would benefit from learning about cy.intercept command and from watching this presentation. Video at https://www.youtube.com/watch?v=LEeoQp1j93I

  • Don’t Make These Testing Mistakes

    In this talk, I will discuss the common mistakes developers make when writing Cypress tests and how to avoid them. We will discuss tests that are too short, tests that hardcode data, tests that race against the application, and other mistakes. I believe this presentation will be useful to anyone writing E2E tests using JavaScript. Presented at TestJSSummit in Jan 2021

  • Cypress: Beyond the "Hello World" Test

    In this presentation, Gleb Bahmutov, a Distinguished Engineer at Cypress will show how to write realistic Cypress tests beyond a simple "Hello World" test. We will look at Node vs Browser boundary, cy.task, setting up the database state, stubbing browser APIs, documentation, GitHub issues, Cypress Studio, and other advanced topics. Everyone who is just starting with Cypress or is an advanced user will benefit from attending this free meetup. Video at https://www.youtube.com/watch?v=Q5djbLL1Pjg

  • Testing Your Documentation Search

    Good documentation with powerful search is the key to the project's success with users. I will show how to configure Algolia search to scrape your site, and how to test the search using Cypress.io test runner. Presented at AngularUp in Nov 2020. Video at https://www.youtube.com/watch?v=cqhV8UbT5LQ

  • End-to-end Testing With Cypress

    Unit testing is hard and time-consuming; and worse - the users and the customers do not care! They only want the features working in the production system, everything else is development overhead. If this is the case, how do we improve web application quality? How do we catch the bugs early? How can we test the deployed system effectively? This presentation tries to answer many of these questions in a web framework agnostic way using open source test runner Cypress.io.

  • Find Me If You Can

    Having a good text search is the key to successful documentation, especially as the number of pages, examples, code recipes, answers, and other user-facing text snippets grow. In this presentation, I will show how to set up the Algolia search index and use it from a static site to make sure your users find _everything_ they are looking for. Video at https://www.youtube.com/watch?v=z_RutLs0W70

  • SDET

    Short greeting to SDET Meetup, where I talk about recent features we have released and our current work. Video at https://www.youtube.com/watch?v=XQ6WQTJ05p0&feature=emb_logo

  • Я вижу что происходит: визуальное тестирование компонентов; I see what is going on

    Slides are in English. В этом докладе я расскажу как визуально тестировать веб-приложения бесплатно, то есть даром, как сказал Винни-Пух. Визуальное тестирование дополняет функциональное тестирование и за один "мах" может сравнить целую страницу с "золотым" эталоном. Это очень эффективно заменяет множество индивидуальных тестов, ловит проблемы с CSS, и гарантирует что приложение работает правильно и выглядит не хуже чем было. For QAFest 2020, video at https://youtu.be/3Z-doNgoJFI

  • Visual Testing for React Components

    Many modern web frameworks use components as their building blocks. In this talk, I will show component testing using Cypress – and I mean “show” literally. You will see the component running inside a real browser, you will interact with the component like a real user, and you can debug the component using the real browser’s DevTools. Finally, I will go through the current open source and commercial options for visually testing the component’s styles and rendering. Presented at Des Moines JS, video at https://youtu.be/gUFdU5fQs4o

  • I See What is Going On

    Visual Testing for Your Components. Many modern web frameworks use components as their building blocks. In this talk, I will show component testing using Cypress - and I mean "show" literally. You will see the component running inside a real browser, you will interact with the component like a real user, and you can debug the component using the real browser's DevTools. Finally, I will go through the current open source and commercial options for visually testing the component's styles and rendering. Read blog post https://glebbahmutov.com/blog/open-source-visual-testing-of-components/ Video at https://www.youtube.com/watch?v=00BNExlJUU8

  • Testing without pain or fear

    End-to-end testing with Cypress, presented at TechTrain.ru in June 2020. Video at https://www.youtube.com/watch?v=QRnd4nvR_dc

  • What Going All-Remote Taught Us About Appsec and Testing Shortfalls

    The Covid-19 pandemic led to a lot of tech companies converting to remote teams almost overnight, and for some this may even become the norm. So as we adjust to new ways of working, how do you ensure that your appsec procedures are designed to withstand any changes in your team dynamics? Video at https://resources.whitesourcesoftware.com/wistia-webinars/what-going-all-remote-taught-us-about-appsec-and-testing-shortfalls

  • CircleCI Orbs vs GitHub Actions vs Netlify Build Plugins CI Setup

    In this meetup discover CircleCI Orbs vs GitHub Actions vs Netlify Build Plugins - what are they and how they simplify continuous integration setup with Gleb Bahmutov. Video at https://www.youtube.com/watch?v=McwE2tztlkA

  • Browser Is The New ... Server

    We see the great technology unification, with the boundary between the server and the client (browser) becoming blurrier every day. Who has time and budget to write separate code bases? In this presentation, Gleb will show the ultimate combination of NPM's two most popular packages: Browserify and Express; and their product that allows moving the complete server to run inside the browser's ServiceWorker. It is like server-side rendering but inside your browser, and even runs when JavaScript is disabled! Video at https://www.youtube.com/watch?v=NfZrL5eJa3g

  • Fast and Effective ... End-to-End Tests?!

    In this talk I will show how testing could be a way to speed up web application development rather than hinder it. I will show end-to-end testing as it should be: fast, providing quick feedback, and able to simulate hard to recreate edge cases. I will also show types of testing that greatly complement E2E testing: visual testing to prevent style regressions, API testing to test edge cases, accessing native browser objects, and component testing.

  • GitHub Actions in Action - NERDSummit

    In this presentation, I will show how simple continuous integration can be with GitHub Actions. They are powerful, have generous limits for public repositories, and can be easily reused. In particular, I will show a few use cases that can be of interest to any JavaScript or TypeScript developer: - How to run Prettier inside a GH Action and push any updated code back to the repository - How to correctly install Node dependencies with a single YAML line - How to run end-to-end Cypress tests without pulling your hair out. Video at https://www.youtube.com/watch?v=zhPqf5z_crc

  • Stop! Don't write another unit test, write a Cypress test!

    This presentation looks at the variety of ways we can test a typical web application. From unit tests to end-to-end, from functional to visual testing, from happy paths to the edge cases - there are a lot of solutions available, and each new technique gives us additional confidence in our application. This presentation will teach you how to guide test writing using code coverage using Cypress open-source test runner.