Files
gymflow/tests/00_smoke.spec.ts
2025-12-18 07:29:35 +02:00

53 lines
2.1 KiB
TypeScript

import { test, expect } from '@playwright/test';
test.describe('Smoke Tests - Backend Refactor', () => {
test('Login, Exercises, and Session Flow', async ({ request }) => {
const email = `smoke_${Date.now()}@example.com`;
const password = 'password123';
// 1. Register
const registerRes = await request.post('http://localhost:3001/api/auth/register', {
data: { email, password }
});
expect(registerRes.ok()).toBeTruthy();
const registerBody = await registerRes.json();
// Check new structure
expect(registerBody.success).toBe(true);
expect(registerBody.data).toHaveProperty('token');
const token = registerBody.data.token;
// 2. Get Exercises
const exercisesRes = await request.get('http://localhost:3001/api/exercises', {
headers: { Authorization: `Bearer ${token}` }
});
expect(exercisesRes.ok()).toBeTruthy();
const exercisesBody = await exercisesRes.json();
expect(exercisesBody.success).toBe(true);
expect(Array.isArray(exercisesBody.data)).toBe(true);
// 3. Create Session
const sessionRes = await request.post('http://localhost:3001/api/sessions', {
headers: { Authorization: `Bearer ${token}` },
data: {
id: "test-session-" + Date.now(),
startTime: new Date().toISOString(),
sets: []
}
});
expect(sessionRes.ok()).toBeTruthy();
const sessionBody = await sessionRes.json();
expect(sessionBody.success).toBe(true);
expect(sessionBody.data).toHaveProperty('id');
// 4. Get Active Session
const activeRes = await request.get('http://localhost:3001/api/sessions/active', {
headers: { Authorization: `Bearer ${token}` }
});
expect(activeRes.ok()).toBeTruthy();
const activeBody = await activeRes.json();
expect(activeBody.success).toBe(true);
expect(activeBody.data).toHaveProperty('session');
expect(activeBody.data.session.id).toBe(sessionBody.data.id);
});
});