Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 88 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: CI

on:
push:
branches:
- main
pull_request:

jobs:
backend-tests:
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Cache NuGet
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: nuget-${{ runner.os }}-${{ hashFiles('**/*.csproj') }}
restore-keys: |
nuget-${{ runner.os }}-

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x

- name: Restore and test
run: dotnet test backend/Cauldron.Api/Cauldron.Api.sln

frontend-unit:
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v1

- name: Cache Bun
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: bun-${{ runner.os }}-${{ hashFiles('frontend/cauldron/bun.lock') }}
restore-keys: |
bun-${{ runner.os }}-

- name: Install dependencies
working-directory: frontend/cauldron
run: bun install

- name: Run unit tests
working-directory: frontend/cauldron
run: bun test:unit

frontend-e2e:
runs-on: ubuntu-latest
needs: frontend-unit
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v1

- name: Cache Bun
uses: actions/cache@v4
with:
path: ~/.bun/install/cache
key: bun-${{ runner.os }}-${{ hashFiles('frontend/cauldron/bun.lock') }}
restore-keys: |
bun-${{ runner.os }}-

- name: Install dependencies
working-directory: frontend/cauldron
run: bun install

- name: Install Playwright browsers
working-directory: frontend/cauldron
run: npx playwright install --with-deps

- name: Run e2e tests
working-directory: frontend/cauldron
run: bun test:e2e
27 changes: 25 additions & 2 deletions backend/Cauldron.Api.Tests/LeftoverEndpointsTests.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,35 @@
using System.Net;
using System.Net.Http.Json;
using Cauldron.Api.Contracts.Leftovers;
using Cauldron.Api.Data;
using Microsoft.Extensions.DependencyInjection;

namespace Cauldron.Api.Tests;

public class LeftoverEndpointsTests(TestApplicationFactory factory) : IClassFixture<TestApplicationFactory>
public class LeftoverEndpointsTests : IClassFixture<TestApplicationFactory>, IAsyncLifetime
{
private readonly HttpClient _client = factory.CreateClient();
private readonly HttpClient _client;
private readonly IServiceScope _scope;
private readonly CauldronDbContext _db;

public LeftoverEndpointsTests(TestApplicationFactory factory)
{
_client = factory.CreateClient();
_scope = factory.Services.CreateScope();
_db = _scope.ServiceProvider.GetRequiredService<CauldronDbContext>();
}

public async Task InitializeAsync()
{
_db.Leftovers.RemoveRange(_db.Leftovers);
await _db.SaveChangesAsync();
}

public Task DisposeAsync()
{
_scope.Dispose();
return Task.CompletedTask;
}

[Fact]
public async Task CreateLeftover_PersistsAndCanBeFetched()
Expand Down
8 changes: 4 additions & 4 deletions frontend/cauldron/playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,11 @@ export default defineConfig({
/* Run your local dev server before starting the tests */
webServer: {
/**
* Use the dev server by default for faster feedback loop.
* Use the preview server on CI for more realistic testing.
* Playwright will re-use the local server if there is already a dev-server running.
* Use dev server locally; on CI build then run preview so assets are built.
*/
command: process.env.CI ? 'npm run preview' : 'npm run dev',
command: process.env.CI
? 'bun run build && bun run preview -- --host 0.0.0.0 --port 4173'
: 'bun dev -- --host 0.0.0.0 --port 5173',
port: process.env.CI ? 4173 : 5173,
reuseExistingServer: !process.env.CI,
},
Expand Down