Laracon DB
Laracon DB
Talks for "testing"
Test Driven Laravel

Adam Wathan presents a detailed walkthrough of test-driven development (TDD) in Laravel, demonstrating how to build features from scratch using both acceptance tests and unit tests. He builds a Twitter clone called 'Tweeter' and shows how to implement features like viewing user profiles and sending follower notification emails, while explaining best practices around using mocks, spies, and fakes in testing.

PHP Performance Tuning With Blackfire

Fabien Potencier discusses PHP performance optimization, focusing on using profilers (particularly Blackfire) to identify and fix performance bottlenecks. He explains that while PHP frameworks like Laravel and Symfony are often considered slow, the real performance issues usually stem from application code rather than the framework itself. The talk covers how to use profiling tools to measure performance metrics, set performance expectations through assertions, and integrate performance testing into development workflows.

Tests Should Tell A Story

Matthew Machuca gives a detailed talk about testing methodologies, focusing on behavior-driven development and test storytelling. He shares his experience working at Think Through Math, where he discovered and fixed bugs in their student-teacher pairing algorithm through better test practices. The talk emphasizes the importance of writing clear, expressive tests that tell a story and avoid coincidental passing tests.

Get A Whiff Of This

Sandi Metz delivers a talk on code smells and refactoring, focusing on practical techniques to improve code quality. She explains how to identify code smells, apply appropriate refactorings, and use dependency injection to make code more testable. The talk emphasizes the importance of making incremental improvements and understanding classic Object-Oriented programming principles.

Patterns That Pay Off

A detailed talk about practical design patterns and code organization in Laravel applications, focusing on when and how to implement different patterns. The speaker emphasizes writing maintainable code by making strategic decisions about pattern usage based on actual needs rather than prematurely implementing complex architectures. He covers both preventative and reactive patterns, from code organization to scaling solutions.

Full-Stack Testing Strategies

A live coding demonstration of frontend testing in Vue.js using Jest and Vue Test Utils. The speaker builds a simple voting application for the 'GIF vs JIF' pronunciation debate, showing how to write tests for component rendering, form validation, API interactions, and asynchronous operations. The talk includes practical examples of mounting components, handling props, mocking API calls, and managing Vue's reactivity system in tests.

APIs With Laravel

TJ Miller presents a comprehensive talk on building and maintaining Laravel APIs, covering best practices from planning through implementation. He emphasizes the importance of documentation, resource responses, schema validation, and maintaining API contracts while sharing practical workflows and implementation patterns developed over years of experience building critical payment processing APIs.

Embrace The Backend

The talk focuses on simplifying Laravel frontend development by reducing JavaScript complexity and leveraging more backend functionality. The speaker describes his journey from basic blade templates to Vue.js components, and then demonstrates how to improve frontend architecture by moving logic back to PHP, using props effectively, embracing form submissions, and not being afraid of page reloads when appropriate.

The Clean Coder

Bob Martin gives a talk about clean architecture, discussing how frameworks like Rails (and by extension Laravel) should not dominate application design. He emphasizes that web frameworks are just I/O devices and should be treated as plugins to the core business logic. He discusses the importance of proper architecture that allows deferring major decisions, separates business logic from delivery mechanisms, and enables easy testing. He also touches on the growing responsibility of software developers in society and the need for self-regulation through practices like TDD.

Everything I Ever Needed To Know About Web Dev, I Learned From My Twitter Timeline

The speaker discusses how to write more declarative code in Laravel by refactoring common patterns found in controller actions. Using examples shared on Twitter as inspiration, he demonstrates how to transform verbose, imperative code into cleaner, more declarative alternatives using Laravel's built-in features like form requests, policies, mutators, and real-time facades. The talk focuses on practical refactoring techniques to reduce branching logic and improve code readability.

Package Development 101

A live coding demonstration of Laravel package development where the speaker builds a gamification badge system package from scratch. The talk covers setting up package boilerplate, implementing badge functionality with tests, creating migrations, setting up facades, and explaining best practices for package development.

Introducing: Livewire

The talk introduces Livewire, a new Laravel package that allows developers to build dynamic interfaces using PHP and minimal JavaScript. The speaker demonstrates how Livewire combines the simplicity of blade templates with reactive features typically associated with frontend frameworks like Vue.js. Through live coding examples building a Twitter-like 'Woof' application, he shows how Livewire handles real-time validation, data binding, and component communication while maintaining Laravel's testing simplicity.

Event Sourcing in Laravel with EventSauce

This talk focuses on implementing event sourcing in Laravel applications using the Event Sauce library. The speaker provides a pragmatic approach to event sourcing, demonstrating how to handle pull requests as an example domain. The talk covers the basics of event sourcing, including aggregates, projections, and process managers, while emphasizing practical code examples over theoretical concepts.

Testing With Fakes

This talk explores testing in Laravel with a focus on facades and test doubles. The speaker explains Martin Fowler's test double definitions (dummies, fakes, stubs, spies, and mocks) and demonstrates how to effectively use Laravel's built-in fakes for testing mail, events, jobs, and HTTP requests. The presentation emphasizes practical approaches to testing, showing how to avoid common pitfalls and achieve genuine confidence in tests rather than false confidence from incomplete assertions.

Pest 2 - Summer of Spice

Nuno Maduro presents upcoming features in Pest PHP 2.9, a popular PHP testing framework. He demonstrates new capabilities including snapshot testing for comparing full responses, describe blocks for better test organization, architectural testing improvements, type coverage analysis, and a new drift plugin that automatically migrates PHP Unit tests to Pest PHP. The talk focuses on how these features make testing simpler and more elegant while maintaining full compatibility with existing PHP Unit tests.

Introducing Pest 3.0

Nuno Maduro presents the upcoming features in Pest PHP v3, the popular PHP testing framework. He introduces three major new features: task management for organizing test todos and GitHub issues within tests, architectural presets for ensuring code consistency, and mutation testing for measuring test quality beyond code coverage. The talk includes live demonstrations of each feature and concludes with the announcement that Pest v3 will have zero breaking changes and that his project Pinkery is being open-sourced.

Lessons From the Framework

Luke Downing gives an insightful talk about learning lessons from Laravel's design and philosophy. He discusses how seemingly simple features like three-line comments and facades reveal deeper truths about software development. The talk emphasizes how Laravel teaches developers to balance rules and conventions with practical developer experience, using examples from routing, testing, and real-time applications.

Objects, Testing and Responsibility

Matt Machuga gives a comprehensive talk about object-oriented programming in PHP/Laravel, focusing on proper object design, testing practices, and code responsibilities. He covers the history of OOP in PHP, explains key concepts like inheritance, traits, and polymorphism, and provides practical guidance on writing testable code while emphasizing the importance of proper object composition and responsible design patterns.

Design How Your Objects Talk Through Mocking

The talk focuses on Test-Driven Development (TDD) and behavioral design patterns, particularly emphasizing the importance of object communication and mocking in software design. The speaker discusses how exposing object communications through tests can help identify design problems and SOLID principle violations. He argues that mocks should be used as design tools rather than just for test isolation, and presents several case studies showing how proper mocking practices can lead to better software design.

Min-maxing Software Costs

The talk discusses software development costs from three perspectives: cost of introduction (writing new code), cost of change (modifying existing code), and cost of ownership (maintaining code). The speaker emphasizes the importance of understanding these costs when deciding whether to write custom code or use existing packages/tools, and advocates for only taking ownership of code that truly needs to be owned and changed frequently.

TDD is dead, long live TDD

The talk discusses how Test-Driven Development (TDD) has evolved into Specification by Example and Behavior-Driven Development (BDD). The speaker demonstrates this evolution by building a Wikipedia search feature using PHP Spec, showing how to write specifications before implementation, use mock objects, and integrate the solution with Laravel. The presentation emphasizes the importance of changing terminology from 'tests' to 'specifications' to better communicate intent and improve developer understanding.

How to avoid database migration hell

Claire Smith from Pop Point presents a comprehensive talk on database migrations and seeding in Laravel applications. She discusses best practices for managing database schemas, implementing different seeding strategies, and sharing database migrations/seeds between multiple Laravel applications using Composer packages.

12 tried and tested top tips for better testing

A comprehensive talk on testing best practices in Laravel, covering 12 tips for effective testing. The speaker discusses various testing tools and techniques, from IDE configurations to test organization and quality checks. Key focus areas include TDD, automated testing workflows, and ways to make tests more readable and maintainable.

Building your API with Apiary & Dredd

The speaker discusses moving from traditional API testing in Laravel to using API Blueprint specifications. He demonstrates how API Blueprint provides a language-agnostic way to define API structures using markdown, which can be tested using Dredd. The talk covers practical examples of implementing API specifications, using hooks for authentication, and organizing large APIs by splitting specifications into multiple files using Hercule.

Zero to API with Lumen

A detailed presentation about creating APIs with Lumen, Laravel's micro-framework. The speaker explains how Lumen differs from Laravel, demonstrates building a RESTful API, and covers key concepts like routing, controllers, authentication, and testing. The talk uses a Pokemon-themed example API to illustrate core concepts while highlighting Lumen's strengths for API development.

Migrating a 15 Year Old Enterprise Application to Laravel: Lessons Learned and Opportunities Gained

Taylor Donnici shares his experiences building enterprise applications with Laravel at Process Maker, discussing the evolution from legacy systems to modern Laravel architecture. He covers key aspects of enterprise development including security, testing, CI/CD pipelines, and asynchronous job processing. The talk includes a live demo of Process Maker's new Laravel-based workflow management system and highlights their open source contributions to the Laravel ecosystem.

Nintendo Emulation in javascript + Vuejs

Taylor Donnici shares his experiences building enterprise applications with Laravel at Process Maker, discussing the evolution from legacy systems to modern Laravel architecture. He covers key aspects of enterprise development including security, testing, CI/CD pipelines, and asynchronous job processing. The talk includes a live demo of Process Maker's new Laravel-based workflow management system and highlights their open source contributions to the Laravel ecosystem.

Introducing: Pest

Nuno presents Pest, an elegant PHP testing framework built on top of PHPUnit. The talk demonstrates how Pest simplifies testing syntax, reduces boilerplate code, and provides a more user-friendly experience through features like higher-order tests, datasets, and improved test coverage reporting. The framework maintains compatibility with existing PHPUnit tests while offering a more modern and concise testing API.

Refactoring to SOLID in Laravel

The speaker demonstrates how to refactor a complex Laravel/Livewire component handling mortgage calculations into smaller, more maintainable pieces using SOLID principles and good design practices. Through several refactoring steps, he shows how to extract business logic into services, use DTOs, implement interfaces, and write proper unit tests while maintaining functionality.

Living your Pest file

Luke Downing presents a comprehensive overview of Pest PHP testing framework, demonstrating its key features like higher order tests, data sets, and expectations API. He showcases these features by building tests for a demo Laravel application called ParrotCon, explaining how Pest simplifies testing while maintaining elegance and expressiveness compared to PHPUnit.

Writing Better Tests with Pest

Nuno presents Pest, an elegant PHP testing framework built on top of PHPUnit. The talk demonstrates how Pest simplifies testing syntax, reduces boilerplate code, and provides a more user-friendly experience through features like higher-order tests, datasets, and improved test coverage reporting. The framework maintains compatibility with existing PHPUnit tests while offering a more modern and concise testing API.

The Future of PHP Testing

Nuno presents Pest, an elegant PHP testing framework built on top of PHPUnit. The talk demonstrates how Pest simplifies testing syntax, reduces boilerplate code, and provides a more user-friendly experience through features like higher-order tests, datasets, and improved test coverage reporting. The framework maintains compatibility with existing PHPUnit tests while offering a more modern and concise testing API.

Managing 5000+ Tests Efficiently

Christof Rülle shares his journey of managing and optimizing a large Laravel test suite with over 5,000 tests that initially took 50 minutes to run. He discusses the challenges faced and solutions implemented, including parallel testing, optimizing setup methods, and dealing with caching issues, ultimately reducing the test runtime to 5 minutes.

Surviving Large Applications

Bobby Balman from Hospitable discusses strategies for maintaining and surviving large Laravel applications. He shares experiences from managing a large-scale Laravel application processing 51 million jobs daily, emphasizing the importance of consistent code structure, proper testing, and following Laravel defaults. The talk focuses on practical approaches to organizing code in domains/modules while keeping things simple and maintainable.

Abusing Laravel for Fun and Profit

David Hemphill gives a talk about creative ways to use and reuse Laravel's built-in components for solving common development problems. He shares approaches for handling front-end filtering, database testing, data access patterns, and model scheduling by leveraging existing Laravel features like pipelines, database seeders, form requests, and the scheduler rather than reaching for third-party packages.

Level up with a Microservices architecture

The speaker presents a practical approach to implementing microservices architecture while avoiding common pitfalls by initially deploying as a monolith. He shares experiences from his time as CTO at Glo, describing how they structured their codebase into independent packages following domain-driven design principles, while maintaining the ability to later transition to true microservices. The talk focuses on achieving the benefits of microservices architecture (like loose coupling and clear boundaries) without immediately taking on all the operational complexity.

Migrating to Laravel: Managing the ick

The talk discusses strategies for migrating legacy CodeIgniter applications to Laravel. The speaker shares his approach of gradually refactoring code while maintaining functionality, using Laravel Torch for eloquent models, implementing API endpoints, and leveraging Laravel Dusk for testing during migration. He emphasizes the importance of managing stakeholder expectations and using proper data modeling during the transition.

Testing Javascript: Building JavaScript applications you won't hate

A comprehensive talk about testing JavaScript and frontend applications, focusing on making testing more manageable and enjoyable. The speaker covers various testing tools and approaches, from static analysis to end-to-end testing, with practical examples of how to implement them effectively.

Crafting maintainable Laravel applications

Jason McCreary presents 10 tips for creating maintainable Laravel applications based on his experience with Shift and 20 years of programming. He covers topics ranging from staying current with Laravel versions to proper testing practices, emphasizing code readability and framework conventions. The talk focuses on practical approaches to improve application maintainability through proper structure, dependency management, and adherence to Laravel's design patterns.

Behaviour Driven Development with Laravel

Marcus Moore presents a talk about behavior-driven development (BDD) in Laravel, explaining how BDD helps bridge communication gaps between stakeholders and developers. He shares his journey from working at a small school to an agency, where he discovered the need for better requirement gathering and testing processes. The talk covers the three stages of BDD - discovery, formulation, and automation - with practical examples using Behat and Laravel integration.

Package design 101

The talk demonstrates how to create and publish Laravel packages, walking through the creation of a badge/gamification package as an example. The speaker shows how to set up package boilerplate, create migrations, implement models and traits, set up testing with Orchestra TestBench, and create facades. The presentation emphasizes that package development isn't complicated and provides practical guidance on structuring and testing Laravel packages.

What's new in Pest

Nuno Maduro presents Pest PHP, a modern testing framework for PHP. He demonstrates its elegant syntax, improved test output, and expectation API compared to PHPUnit. He then introduces a new stress testing plugin called Stressless that helps developers test application performance under load. The talk includes live demos of both Pest's core features and the new stress testing capabilities.

Building an accessibility testing habit

A comprehensive talk about web accessibility testing and how to build better habits around it. The speaker discusses various tools and techniques for testing accessibility, including screen readers, keyboard navigation, and color contrast tools. The talk emphasizes making accessibility testing more approachable by breaking it down into manageable checklists and establishing regular testing habits.

Robust delivery with CI/CD

Sam, a CTO at Custom D, discusses the evolution of deployment practices and how to achieve high DevOps maturity. He explains how organizations can move from monthly deployments with high failure rates to continuous deployment with minimal risk through incremental improvements, automation, and feature flags. The talk covers practical strategies for implementing modern deployment practices, including handling legacy code bases and getting organizational buy-in.