This repository demonstrates Automated E2E Testing for Blazor using Reqnroll. It showcases a simple ticket booking system with acceptance tests written in Gherkin syntax and executed with Playwright .NET.
- Features π
- Prerequisites βοΈ
- Getting Started π§
- Usage π
- Running the Application π
- Running the Tests π§ͺ
- Project Structure π
- Roadmap πΊοΈ
- Contributing π€
- License π
- Event Listing: Displays a list of upcoming events.
- Event Details: Shows detailed information for each event.
- Ticket Booking: Allows users to book tickets by entering their name.
- Automated Acceptance Tests: Validates key user flows using Gherkin-based specifications with Reqnroll and Playwright .NET.
- .NET 9 SDK or later
-
Clone the Repository
git clone https://github.com/phmatray/AutoTests.git cd AutoTests -
Restore .NET Packages
From the solution directory, run:
dotnet restore
-
Install Playwright Browsers
Navigate to the test project directory and install the required browsers:
cd TicketBookingApp.EndToEndTests pwsh bin/Debug/net9.0/playwright.ps1 install
4Project Configuration
The test project uses the following csproj configuration:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
<PackageReference Include="Microsoft.Playwright" Version="1.51.0" />
<PackageReference Include="Reqnroll.NUnit" Version="2.4.0"/>
<PackageReference Include="nunit" Version="4.3.2" />
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0" />
<PackageReference Include="Shouldly" Version="4.3.0"/>
</ItemGroup>
</Project>Once the packages are restored, run the Blazor server app and browse the demo booking flow:
cd TicketBookingApp
dotnet runOpen http://localhost:5140/ to see the list of events (EventService seeds three in-memory events), drill into an event's details page, and book a ticket by entering a name and confirming. The detailed steps for running the app and its Reqnroll/Playwright acceptance suite are below.
-
Navigate to the Blazor Project Directory
cd TicketBookingApp -
Run the Blazor Server Application
dotnet run
-
Access the Application
Open your browser and navigate to
http://localhost:5140/(or the URL provided by your console) to view the ticket booking system.
-
Ensure the Blazor Application Is Running
Start the Blazor app as described above.
-
Navigate to the Test Project Directory
cd TicketBookingApp.EndToEndTests -
Run the Test Suite
dotnet test
The acceptance tests are written in Gherkin and located in the /features folder. Hereβs an example of the feature file:
Feature: Ticket Booking System
As a user,
I want to view available events and book tickets,
So that I can attend an event.
Scenario: Home page lists available events
Given I navigate to the home page
Then I should see a list of events
Scenario: Event details are displayed correctly
Given I navigate to the event details page for event with id 1
Then I should see the event title "Rock Concert"
Scenario: Booking a ticket successfully
Given I navigate to the booking page for event with id 1
When I enter "John Doe" into the "User Name" field
And I click on "Confirm Booking"
Then I should see a confirmation message "Booking Confirmed"/TicketBookingApp
βββ Models/ // Data models (e.g., Event.cs)
βββ Pages/ // Blazor pages (Index.razor, EventDetails.razor, Booking.razor)
βββ Services/ // Application services (e.g., EventService.cs)
βββ Program.cs // Application entry point
/TicketBookingApp.EndToEndTests
βββ Features/ // Gherkin feature files (e.g., TicketBooking.feature)
βββ Hooks/ // Playwright setup and teardown hooks
βββ Pages/ // Page object models (Home, Event Details, Booking pages)
βββ StepDefinitions/ // Reqnroll/SpecFlow step definitions binding Gherkin to Playwright
βββ TicketBooking.feature // Acceptance tests in Gherkin syntax
- .NET 10
- Microsoft.Playwright
- Reqnroll.xUnit
- xunit.v3
- xunit.runner.visualstudio
- Shouldly
- Add a GitHub Actions workflow to run the Reqnroll/Playwright suite automatically on every push and PR
- Replace the in-memory
EventServicewith persistent storage (e.g. EF Core + a real database) - Add form validation and error handling to the booking flow (e.g. empty name, duplicate bookings)
- Extend the Gherkin feature set with negative/edge-case scenarios (invalid event id, cancellations)
- Add a booking cancellation / management page
See the open issues for details and to propose new ideas.
Contributions are welcome! If you have suggestions, bug fixes, or new features, please open an issue or submit a pull request.
Maintainer: phmatray
This project is licensed under the MIT License. See the LICENSE file for more details.
Happy coding and testing! π
