diff --git a/playwright-report/index.html b/playwright-report/index.html index 23f306d..fc99077 100644 --- a/playwright-report/index.html +++ b/playwright-report/index.html @@ -82,4 +82,4 @@ Error generating stack: `+n.message+`
- \ No newline at end of file + \ No newline at end of file diff --git a/server/test.db b/server/test.db index 7109c5a..110acd1 100644 Binary files a/server/test.db and b/server/test.db differ diff --git a/src/hooks/useWorkoutForm.ts b/src/hooks/useWorkoutForm.ts index f912a32..fe760df 100644 --- a/src/hooks/useWorkoutForm.ts +++ b/src/hooks/useWorkoutForm.ts @@ -71,11 +71,11 @@ export const useWorkoutForm = ({ userId, onSetAdded, onUpdateSet }: UseWorkoutFo switch (selectedExercise.type) { case ExerciseType.STRENGTH: if (weight) setData.weight = parseFloat(weight); - if (reps) setData.reps = parseInt(reps); + setData.reps = reps ? parseInt(reps) : 1; break; case ExerciseType.BODYWEIGHT: if (weight) setData.weight = parseFloat(weight); - if (reps) setData.reps = parseInt(reps); + setData.reps = reps ? parseInt(reps) : 1; setData.bodyWeightPercentage = parseFloat(bwPercentage) || 100; break; case ExerciseType.CARDIO: @@ -93,7 +93,7 @@ export const useWorkoutForm = ({ userId, onSetAdded, onUpdateSet }: UseWorkoutFo if (distance) setData.distanceMeters = parseFloat(distance); break; case ExerciseType.PLYOMETRIC: - if (reps) setData.reps = parseInt(reps); + setData.reps = reps ? parseInt(reps) : 1; break; } return setData; diff --git a/tests/workout-tracking.spec.ts b/tests/workout-tracking.spec.ts index d8b9885..120167b 100644 --- a/tests/workout-tracking.spec.ts +++ b/tests/workout-tracking.spec.ts @@ -482,4 +482,26 @@ test.describe('III. Workout Tracking', () => { + test('3.16 C. Active Session - Log Set with Default Reps', async ({ page, createUniqueUser, request }) => { + const user = await loginAndSetup(page, createUniqueUser); + + const exName = 'Default Reps ' + randomUUID().slice(0, 4); + await request.post('/api/exercises', { + data: { name: exName, type: 'STRENGTH' }, + headers: { 'Authorization': `Bearer ${user.token}` } + }); + + await page.getByRole('button', { name: /Free Workout|Start Empty/i }).click(); + await page.getByRole('textbox', { name: /Select Exercise/i }).click(); + await page.getByText(exName).click(); + + await page.getByLabel('Weight (kg)').first().fill('50'); + // Reps left empty intentionally + + await page.getByRole('button', { name: /Log Set/i }).click(); + + // Verify it logged as 1 rep + await expect(page.getByText('50 kg x 1 reps')).toBeVisible(); + }); + });