Run Time 8:12Free
We'll begin by setting up a fresh Laravel application and pulling in Cypress. We'll eventually require a variety of Laravel-specific helpers for logging in, seeding a database, triggering an Artisan command, and more. So with that in mind, we'll also pull in a Composer package of mine that I use in all my Laravel apps.
Run Time 13:37Free
Let's begin by using TDD to drive the creation of a blog posts landing page. This will give us the opportunity to review and discuss a basic workflow you can expect to follow.
Run Time 12:43
Often in this series, we'll use BDD to drive our applications. However, the reality is that you'll often find yourself filling in tests after the fact. With that in mind, let's work with the actual Laracasts codebase and fill in a series of end-to-end tests for the site's login modal.
Run Time 13:41Free
Let's take a few moments to discuss the difference between commands and assertions, while also reviewing the underlying Chai assertion library that Cypress makes use of.
Run Time 12:35
A true end-to-end test will span your entire system. This means no swapping things in the container, no faking third party APIs, and no stubbing endpoints. However, once you have at least one test that hits all necessary endpoints, the remaining tests are free to swap in fake data. This way, for example, you don't need to hit Stripe's server every time you test a portion of your registration form.
In this episode, we'll review how to intercept any XHR request and fake its response with fixture data.
Run Time 14:48
Let's review another example using the Laracasts codebase. How would we go about testing registration that hits a third-party billing API, like Stripe?
Run Time 12:37Free
Iframes can be a little tricky when using Cypress. In this episode, we'll leverage retry-ability to wait until an iframe has loaded before continuing with the necessary queries and assertions.
View the source code for this episode on GitHub.
*Series still in development. Check back often for updates.