EPIC 4: Customization of Workout Programs

E04-F01: Modifying Existing Workout Programs

User Story: As a user, I want to modify the order, number of sets, and repetitions of exercises in a workout program, so that I can customize pre-made programs to better suit my needs.

Scenarios

Scenario: E04-F01-S01 - Changing exercise order in a program
  Given I am viewing the "Upper Body Power" program in edit mode
  When I drag the "Shoulder Press" exercise above "Bench Press"
  Then the exercise order should be updated
  And "Shoulder Press" should now appear before "Bench Press"
  And my changes should be automatically saved
Scenario: E04-F01-S02 - Adjusting sets and repetitions for specific exercises
  Given I am editing the "Upper Body Power" program
  When I select the "Bench Press" exercise
  And I change the sets from 3 to 4
  And I change the repetitions from 10 to 8
  Then the exercise parameters should be updated
  And the program should reflect my customized parameters

Acceptance Tests

# Test d'acceptation
Scenario: E04-F01-TA01 - Discarding changes to a workout program
  Given I am editing the "Upper Body Power" program
  And I have made several modifications
  When I tap the "Cancel" button
  Then I should see a confirmation dialog asking if I want to discard changes
  When I confirm discarding changes
  Then I should return to the program details view
  And no changes should have been applied to the program
# Test d'acceptation
Scenario: E04-F01-TA02 - Setting custom rest periods between exercises
  Given I am editing the "Upper Body Power" program
  When I tap on the rest period between "Bench Press" and "Shoulder Press"
  And I change the duration from "90 seconds" to "60 seconds"
  Then the rest period should be updated to "60 seconds"
  And this change should be reflected when I start the workout

E04-F02: Exercise Substitution in Programs

User Story: As a user, I want to replace an exercise with another one targeting the same muscles, so that I can adapt workouts to available equipment or physical limitations.

Scenarios

Scenario: E04-F02-S01 - Substituting an exercise based on equipment availability
  Given I am editing the "Upper Body Power" program
  When I long press on "Barbell Bench Press"
  And I select "Replace Exercise"
  And I filter alternatives by "Requires Dumbbells Only"
  And I select "Dumbbell Bench Press"
  Then "Barbell Bench Press" should be replaced with "Dumbbell Bench Press"
  And the sets and repetitions should remain the same
  And my customized program should be saved
Scenario: E04-F02-S02 - Finding alternative exercises for injury accommodation
  Given I am editing the "Leg Day" program
  When I long press on "Barbell Squat"
  And I select "Replace Exercise"
  And I filter by "Joint-Friendly Alternatives"
  Then I should see options like "Leg Press" and "Goblet Squat"
  When I select "Leg Press"
  Then "Barbell Squat" should be replaced with "Leg Press"
  And the program should be updated

Acceptance Tests

# Test d'acceptation
Scenario: E04-F02-TA01 - Viewing exercise comparison before substitution
  Given I am editing the "Upper Body Power" program
  When I long press on "Barbell Bench Press"
  And I select "Replace Exercise"
  And I select "Dumbbell Bench Press" from the alternatives
  And I tap "Compare"
  Then I should see a side-by-side comparison of both exercises
  And I should see which muscles are primary and secondary for each
  And I should see difficulty level comparison
  And I should see equipment requirements for both
  When I tap "Confirm Substitution"
  Then "Barbell Bench Press" should be replaced with "Dumbbell Bench Press"

E04-F03: Template-Based Workout Creation

User Story: As a user, I want to create custom workouts based on templates to save time, so that I can quickly build effective workouts without starting from scratch every time.

Scenarios

Scenario: E04-F03-S01 - Creating a workout from a template
  Given I am on the "Create Workout" screen
  When I select the "Template" option
  And I choose the "Push/Pull/Legs" template
  Then I should see three pre-configured workout days
  And each day should contain suggested exercises
  When I customize the "Push" day
  And I save the template as "My PPL Program"
  Then it should be available in my workout programs
Scenario: E04-F03-S02 - Sharing a custom workout template
  Given I have created a custom workout program "HIIT Madness"
  When I open the program details
  And I tap the "Share" button
  Then I should see options to share via message, email, or generate a code
  When I select "Generate Code"
  Then a unique alphanumeric code should be displayed
  And I should be able to copy it to my clipboard

Acceptance Tests

# Test d'acceptation
Scenario: E04-F03-TA01 - Duplicating a workout program for modification
  Given I am viewing the details of the "Upper Body Power" program
  When I tap the "More Options" menu
  And I select "Duplicate & Edit"
  And I name the new program "My Upper Body Power"
  Then I should be taken to the edit mode for the new program
  And all exercises from the original program should be included
  And any changes I make should only affect my duplicate version

E04-F04: Intelligent Workout Adaptation

User Story: As a user, I want the app to suggest modifications to my workout based on my progress and available time, so that I can optimize my training even when facing constraints or reaching plateaus.

Scenarios

Scenario: E04-F04-S01 - Getting time-constrained workout adaptation
  Given I am about to start my "Full Body Strength" workout
  When I tap "I'm short on time"
  And I specify "30 minutes available"
  Then the app should suggest a condensed version of my workout
  And it should prioritize compound exercises over isolation movements
  And it should adjust rest periods to fit the time constraint
  When I accept the modified workout
  Then my workout session should begin with the time-optimized version
Scenario: E04-F04-S02 - Receiving progressive overload suggestions
  Given I have completed "Barbell Squat" for 3 sets of 5 reps at 200lbs
  And I performed it with "Easy" difficulty for two consecutive workouts
  When I begin my next workout containing "Barbell Squat"
  Then I should see a suggestion to increase the weight to 210lbs
  And I should have the option to accept or modify the suggestion

Acceptance Tests

# Test d'acceptation
Scenario: E04-F04-TA01 - Adapting workout based on available equipment
  Given I have set my available equipment to exclude "Barbell"
  When I open a workout that includes "Barbell Bench Press"
  Then I should automatically see a suggestion to substitute with "Dumbbell Bench Press"
  And I should have the option to accept all equipment-based substitutions at once

E04-F05: Organizing Favorite Exercises

User Story: As a user, I want to mark my favorite exercises and create personalized collections, so that I can quickly access the exercises I use most frequently.

Scenarios

Scenario: E04-F05-S01 - Marking exercises as favorites
  Given I am browsing the exercise library
  When I view the details of "Romanian Deadlift"
  And I tap the star icon
  Then the exercise should be added to my favorites
  And the star icon should appear filled to indicate favorite status
Scenario: E04-F05-S02 - Creating a custom exercise collection
  Given I am in the "My Exercises" section
  When I tap "Create Collection"
  And I name the collection "Hotel Room Workouts"
  And I select exercises that require no equipment
  And I save the collection
  Then "Hotel Room Workouts" should appear in my collections list
  And it should contain all the selected exercises

Acceptance Tests

# Test d'acceptation
Scenario: E04-F05-TA01 - Removing an exercise from favorites
  Given I am viewing my "Favorite Exercises" list
  And "Romanian Deadlift" is in my favorites
  When I tap the filled star icon for "Romanian Deadlift"
  Then I should see a confirmation dialog
  When I confirm removal
  Then "Romanian Deadlift" should be removed from my favorites
  And the star icon should appear unfilled