TDD With Laravel Logo
Build well-tested
apps from scratch
Testing does not have to be intimidating.
Learn how to build a scalable, well-tested, real-world application in a concise, step-by-step series of screencasts.
Early-release version available with a 30% discount
Testing might seem hard, but it really isn't.

Most tutorials use examples like summing or multiplying numbers, which isn't really useful in a real-world situation and might make you think testing is much harder than it actually is.

On this course, I'll teach you how to test a Laravel application from scratch, with detailed screencasts and a Git repository for you to check the progress at anytime.

The example we'll be using is an uptime checker, where a user can subscribe and add sites to be monitored, configure webhooks, notifications, archive websites, and more.

The lessons are as short as they can get — I'm not interested in making them longer so I can say my course has "x" hours. Please take a look at the link below to see what's currently available.

Check the lessons currently available here.
Current table of contents
Available Lessons
  • 04:51

    00 - Concepts & Terms

  • 06:50

    01 - Setting Up Our Application

  • 08:15

    01 - Assertions And Test Examples

  • 12:37

    02 - Writing Our First Test

  • 01:51

    03 - Testing Authentication Is Required

  • 02:29

    04 - Testing Validation

  • 07:02

    05 - Testing Sites Have Valid URL Protocols

  • 04:03

    06 - Extracting Validation To A Request Class

  • 11:31

    07 - Sending Notifications

  • 04:35

    07 - Visual Changes & Making Sure A Site Does Not Get Added Twice

  • 10:15

    08 - Checking A Website

  • 00:31

    08 - Casting The Check Model Properties

  • 04:20

    09 - Calculating The Elapsed Time

  • 03:43

    10 - Faking The HTTP Client

  • 04:52

    11 - Testing All HTTP Failure Codes Using Data Providers

  • 01:18

    11 - Making Http Assertions

  • 10:28

    12 - Test Driving Bugs

  • 02:55

    13 - Limiting The Response Content

  • 04:21

    14 - Wrapping Things Up Writing Small, Important Tests

  • 03:34

    15 - Checking The Website As Soon As It Is Added

  • 05:59

    16 - Writing A Command To Check Every Website Every Single Minute

  • 07:12

    17 - Notifying The User Once Their Website Goes Down

  • 04:06

    18 - Notifying The User Once Their Site Comes Back Up

  • 03:17

    18 - Testing The SiteIsDown Notification Class

  • 07:20

    19 - Refactoring Combining Two Notifications Into One

  • 06:54

    20 - Accepting Webhook URLs On Sites

  • 07:20

    21 - Sending Webhooks Back

  • 13:51

    22 - Extracting The Webhook Code To Its Own Job

  • 03:27

    23 - Replacing The Webhook Call With A Job Dispatch

  • 01:52

    24 - Testing The Site

  • 08:13

    25 - Refactoring The CheckWebsite Test

  • 09:08

    26 - Making Sure We Can Filter Offline Sites

  • 09:44

    27 - Filtering Archived Sites

  • 10:34

    28 - Filtering Active Sites

Frequently asked questions

Who is this course for?

This course is aimed at developers that already comfortable with Laravel and want to learn testing. If you're well-experienced with TDD, this course might not be worth it.
As a beginner, you'll learn how to actually write tests that keep you happy and your application stable.
As an intermediate developer that doesn't know much about testing, you'll learn some nice tricks and get more comfortable with Laravel's testing API.

Do you offer refunds?

Yes. You have 7 days to ask for a refund. No questions asked.

I don't know Laravel, should I buy this course?

Probably not. I suggest you learn the basics and then see if you're still interested in the course.

Why should I chosee this course over Laracasts?

If you have to choose between this course and Laracasts, I suggest you go with Laracasts.
This course is going to aggregate a lot to you, but on Laracasts you can learn about several other things.

Do you support purchasing power parity?

Yes! It is not available on the website yet, but you can send me an e-mail at [email protected] and I'll give you a 30% discount if you're from a country with a lower purchasing power.

I'm a student and I don't have enough money to buy this course. What can I do?

I want everybody to be able to purchase this course if they want it. Send me an email at [email protected] or reach out to me on Twitter and we'll figure things out!

Besides the screencasts, what do you get?

You get access to the Git repository and to a Slack workspace where you can chat with other members and solve your doubts.

Are there going to be additional lessons?

Definitely. The current table of contents is just a reference — I will surely add additional lessons for awhile, as long as topics come up.

Do you have any free content?

Sure I do. Check out my YouTube Channel.


7-day no questions asked refund policy.

If you don't enjoy the course, it's fine — you'll be refunded.

Early Release

$139 $99

Get access to the lessons as they're released and get a 30% discount.

  • Lifetime access to all lessons as they're added

  • Access to the Slack workspace

  • Access to the Github repository

  • Ability to request new lessons



Get access to the finished, polished version of the course.

  • Lifetime access to all lessons

  • Access to the Slack workspace

  • Access to the Github repository

  • Ability to request new lessons

Who's teaching?

Hey! My name is Mateus Guimarães and I've been writing code for a few years now.

I've worked with several different types of clients, including companies in the telecommunications, marketing and SMS businesses.

I've also had my own company — a ticketing platform — which gave me a lot of experience writing robust, well-tested apps.

In my free time, I like to blog and I also have a YouTube channel with programming screencasts and general life/work videos.

You can also find me on Twitter, GitHub, LinkedIn and Instagram.

© 2021 TDD with Laravel. All rights reserved.