Read-only access
Loading...
0/171
passed
Code
Scenario
Given / When / Then
Page
Type
Status
| AC-059 | happy | G a client receives the automated 24-hour reminder email for a confirmed sessionW the client clicks the rescheduling link provided within the email bodyT the system redirects the client to the public booking calendar with their current session details pre-selected for modification | — | e2e | ready |
| AC-060 | error | G a client has already successfully rescheduled or cancelled the specific session associated with a previously sent reminderW the client clicks the rescheduling link from the old 24-hour reminder emailT the system displays a message indicating the link is no longer valid because the booking has already been modified | — | e2e | ready |
| AC-061 | edge | G a client opens a 24-hour reminder email but the session start time is now less than 12 hours awayW the client clicks the rescheduling link in the emailT the system redirects the client to a contact page stating the automated rescheduling window has closed and they must call the studio | — | e2e | ready |
| AC-062 | error | G a client clicks a rescheduling link containing a malformed or expired security tokenW the client attempts to access the rescheduling page via the linkT the system displays a secure error page and prompts the client to log into their portal manually to manage the booking | — | e2e | ready |
| AC-117 | happy | G a booking is confirmed and the current time is exactly 2 hours before the session start timeW the client receives the automated SMS reminderT the message contains the studio's physical location address and a clickable URL that opens the location in the mobile device's default map application | — | e2e | ready |
| AC-118 | edge | G the studio owner has not entered a specific address for the booking's assigned studio locationW the client reaches the 2-hour reminder trigger windowT the system sends the SMS with a fallback message instructing the client to check the portal for location details rather than sending a broken or empty map link | — | e2e | ready |
| AC-119 | error | G a client has a session booked and the 2-hour window is reached, but the SMS provider returns a permanent delivery failure (e.g. landline number)W the client is due to receive the reminderT the system logs the delivery failure and immediately sends a fallback email notification containing the same location and link details | — | integration | ready |
| AC-051 | happy | G a booking has a confirmed status and an outstanding balance of $150.00W the system triggers the final automated reminder for the ownerT the notification includes the specific $150.00 amount and a direct URL to the Stripe payment page for that booking | — | e2e | ready |
| AC-052 | edge | G a booking has been fully paid in advance (zero balance)W the system triggers the final automated reminder for the ownerT the notification excludes the payment link and instead displays a message confirming the balance is paid in full | — | e2e | ready |
| AC-053 | error | G the payment gateway is temporarily unresponsive and cannot generate a valid session linkW the system attempts to send the final reminder for the ownerT the system sends the reminder without the link but includes a note that payment can be made at the studio, or logs a retry specifically for the link generation | — | integration | ready |
| AC-054 | edge | G the owner has updated the session price after the initial deposit was paidW the system triggers the final automated reminder for the ownerT the outstanding balance is recalculated in real-time to reflect the most recent total minus the deposit | — | integration | ready |
| AC-075 | happy | G the owner is on the notification settings pageW the owner updates the 24-hour email template with specific studio location details and savesT the system stores the new template and displays a confirmation that the notification content was updated | — | e2e | ready |
| AC-076 | error | G the owner is configuring the SMS reminder scheduleW the owner attempts to save a reminder interval set to 0 hours before the sessionT the system prevents the save and displays a validation error requiring a minimum interval of at least 1 hour | — | e2e | ready |
| AC-077 | edge | G the owner is editing the SMS reminder contentW the owner enters a message that exceeds the maximum character limit for a single SMS segmentT the system displays a character count warning and indicates that the message will be split into multiple SMS charges | — | e2e | ready |
| AC-078 | error | G the owner is editing the notification templateW the owner removes the required 'reschedule link' placeholder tag from the email content and tries to saveT the system rejects the update and notifies the owner that the reschedule link tag is mandatory for automated reminders | — | integration | ready |
| AC-079 | happy | G the owner has configured both SMS and email remindersW the owner toggles the SMS notification status to 'Disabled' while keeping Email 'Enabled'T the system saves the configuration and stops all future SMS triggers while maintaining the email reminder schedule | — | integration | ready |
| AC-165 | edge | G the user navigates to the Settings Notifications page to manage reminder schedules and templatesW the system is fetching the current notification settings and template data from the serverT the user should see a skeleton loader or progress indicator in the Reminder Channels & Schedule and Template Editor sections to indicate the content is being retrieved, with interactive inputs disabled until data is ready | — | e2e | ready |
| AC-047 | happy | G a booking exists where the 24-hour and 2-hour automated reminders have been successfully dispatchedW the owner opens the reminder log for that specific bookingT the system displays a list showing the delivery timestamp, the recipient contact info (email/SMS), and the notification type for each sent message | — | e2e | ready |
| AC-048 | edge | G a new booking was just created and no reminder triggers have been met yetW the owner views the reminder log for this bookingT the system displays an empty state message indicating that no reminders have been sent for this session yet | — | e2e | ready |
| AC-049 | error | G the automated messaging service failed to deliver a scheduled reminder due to an invalid client phone number or emailW the owner reviews the reminder log for that bookingT the system displays the delivery attempt with a 'Failed' status and the specific error reason provided by the service provider | — | e2e | ready |
| AC-050 | edge | G a client has multiple bookings across different datesW the owner views the reminder log within the context of a single specific booking instanceT the log displays only the reminders associated with that specific booking ID, excluding notifications sent for the client's other sessions | — | e2e | ready |
| AC-148 | error | G a network failure or server exception occurs while retrieving the booking dataW the application fails to resolve the API requestT the user sees a message stating "Unable to load booking — Try refreshing or contact support." with an option to retry the request | — | e2e | ready |
Code
Scenario
Given / When / Then
Page
Type
Status
| AC-030 | happy | G the payment gateway has successfully processed a deposit for a new sessionW the client completes the checkout processT the system sends a single email containing both a PDF receipt and the booking confirmation details to the client's registered email address | — | integration | ready |
| AC-031 | error | G the payment gateway returns a success code but the automated email service is temporarily unreachableW the client completes the checkout processT the system queues the confirmation email for retry and displays a message on the post-payment screen that the receipt will arrive shortly | — | e2e | ready |
| AC-032 | edge | G a booking is made for a 'Free' or '0.00' cost promotional session where no payment processing is requiredW the client confirms the bookingT the system sends the booking confirmation email immediately but omits the digital receipt attachment/section | — | integration | ready |
| AC-153 | edge | G the user navigates to the Billing History pageW the system has no historical invoice records for the accountT the Invoices Table section displays the message 'Your account has no invoices.' | — | e2e | ready |
| AC-155 | error | G the user is on the Billing History pageW the API request to fetch invoices fails to resolveT the Invoices Table section displays 'Unable to load billing history' and provides a 'Try again' action | — | e2e | ready |
| AC-157 | edge | G the user triggers a page refresh or initial load of the Billing History pageW the invoice data is currently being fetched from the serverT the Invoices Table section displays a 'Loading billing history…' indicator | — | e2e | ready |
| AC-042 | happy | G the client has selected a time slot and is viewing the mobile-optimized payment summaryW the client submits valid credit card details via the integrated Stripe payment formT the system processes the transaction, displays a success confirmation, and updates the booking status to 'Confirmed' | — | e2e | ready |
| AC-043 | edge | G the client is on the payment screen and the 15-minute reservation window for the selected slot expiresW the client attempts to submit their payment details after the timeoutT the system rejects the payment attempt and displays a message that the session lock has expired and the slot must be re-selected | — | e2e | ready |
| AC-044 | error | G the client is on the payment summary pageW the client attempts to submit the payment form with a missing CVV or an expired card dateT the system prevents submission and displays immediate validation errors specific to the missing or incorrect fields | — | e2e | ready |
| AC-045 | edge | G the client has submitted their payment and the gateway returns a 'Processing' or 'Pending' status (e.g., 3D Secure verification needed)W the client completes the external verification step on their mobile deviceT the system waits for the asynchronous confirmation before transitioning the booking to 'Confirmed' and showing the final receipt | — | unit | ready |
| AC-046 | edge | G the client is on the payment page for a specific session depositW the client accidentally taps the 'Pay' button multiple times in rapid successionT the system disables the button after the first tap to prevent duplicate transactions and multiple deposit charges | — | e2e | ready |
| AC-121 | edge | G the user navigates to the Pricing page to view plan options for bookingW the system is fetching the latest plan data from the databaseT the user sees a 'Loading pricing' message and a placeholder skeleton within the Pricing Toggle & Plan Cards section | — | e2e | ready |
| AC-138 | edge | G the user has successfully navigated to the Billing Payment Methods page but has no cards on fileW the system finishes checking the user's account for saved payment dataT the Saved Cards List displays the message 'No saved payment methods — Add a card to make checkout faster.' and the Add Payment Method Form remains available for use | — | e2e | ready |
| AC-151 | edge | G the user has provided valid credit card details and submitted the payment formW the Stripe payment intent is being processed by the serverT the user sees a 'Processing payment…' overlay that disables further interaction with the form to prevent duplicate charges | — | e2e | ready |
| AC-013 | error | G the client has entered payment details for a session booking and the payment gateway returns a 'Decline' statusW the client attempts to complete the paymentT the system displays a specific message indicating the card was declined and provides a 'Retry Payment' button alongside the payment input fields | — | e2e | ready |
| AC-014 | happy | G the client is viewing a declined payment error message and has the option to retryW the client enters a different credit card number and clicks the retry buttonT the system processes the new card details against the original booking session without requiring the client to re-select their time slot | — | e2e | ready |
| AC-015 | edge | G the client has reached the maximum number of failed payment attempts allowed by the gatewayW the client attempts to retry the payment for the fourth consecutive timeT the system displays a security lockout message and provides instructions to contact the studio owner directly rather than prompting another retry | — | e2e | ready |
| AC-125 | error | G a network failure or server timeout occurs while retrieving pricing dataW the user attempts to view the Pricing pageT the user sees the message 'Unable to load plans — Try again later.' with a retry button in the Pricing Toggle & Plan Cards section | — | e2e | ready |
| AC-141 | error | G the user is attempting to fetch or modify their saved cards on the Billing Payment Methods pageW a network failure or server-side exception occurs during the data requestT the user sees the message 'Unable to update payment methods — Try again later.' and is provided with a mechanism to retry the request | — | e2e | ready |
| AC-113 | happy | G the owner is on the deposit configuration pageW the owner enters a valid currency amount and saves the deposit settingsT the system updates the global booking requirements and applies this deposit amount to all future public session selections | — | e2e | ready |
| AC-114 | error | G the owner is configuring the mandatory depositW the owner attempts to save a deposit amount that is negative or contains non-numeric charactersT the system prevents the save and displays a validation error message indicating the amount must be a positive number | — | e2e | ready |
| AC-115 | edge | G the owner is configuring the deposit for all booking typesW the owner sets the deposit amount to zeroT the system saves the setting and allows clients to book sessions without an upfront payment step | — | unit | ready |
| AC-116 | edge | G the owner is updating the mandatory deposit amountW the owner saves a new deposit value while a client has an existing 'pending' session lockT the client with the active lock is charged the original deposit amount displayed at the start of their checkout session | — | e2e | ready |
| AC-123 | edge | G the pricing database query returns an empty setW the Pricing Toggle & Plan Cards section attempts to renderT the user sees the message 'No plans — No pricing plans are available right now.' and the toggle is hidden | — | e2e | ready |
| AC-126 | edge | G the user is on the Billing page and does not have any active subscriptions or billing historyW the billing data returns an empty setT the user sees the message 'No billing info — You don't have an active plan.' and the sections for activity and payment methods remain blank | — | e2e | ready |
| AC-020 | happy | G a specific time slot is available on the public booking calendarW the owner selects the time slot and proceeds to the payment summary pageT the system marks the slot as 'pending' and hides it from other potential clients for the duration of the reservation window | — | e2e | ready |
| AC-021 | edge | G the owner has a time slot reserved in a 'pending' state and the reservation window (e.g., 15 minutes) expires without a successful transactionW the system performs its periodic cleanup of expired sessionsT the slot status reverts to 'available' and becomes visible on the public calendar again | — | e2e | ready |
| AC-022 | edge | G two separate owners are viewing the same available time slot simultaneouslyW the first owner submits the selection slightly before the second ownerT the first owner is granted the 'pending' lock while the second owner receives a message that the slot is no longer available | — | e2e | ready |
| AC-023 | happy | G the owner is in the process of paying for a 'pending' slot and the payment is successfully processed by the gatewayW the system receives the payment confirmationT the slot status transitions immediately from 'pending' to 'confirmed' without returning to the available pool | — | integration | ready |
| AC-024 | happy | G the owner is on the payment page with a 'pending' lock activeW the owner manually clicks the 'Cancel' or 'Back' button to exit the checkout flowT the system immediately releases the 'pending' lock on the calendar slot rather than waiting for the timeout | — | e2e | ready |
| AC-009 | happy | G a booking exists in the system with a successful Stripe payment recordW the owner opens the booking details modal from the studio calendarT the system displays the payment status as 'Paid' and the specific alphanumeric transaction ID provided by the payment gateway | — | e2e | ready |
| AC-010 | edge | G a booking was manually added by the studio owner without an associated digital paymentW the owner views the booking details on the calendarT the payment status displays as 'Unpaid' or 'Manual' and the transaction ID field is replaced with a 'N/A' or 'No Transaction' indicator | — | e2e | ready |
| AC-011 | error | G a client's payment attempt was declined or failed at the gateway levelW the owner reviews the booking details for that specific time slotT the system displays the payment status as 'Failed' and shows the failure reference ID if available from the gateway | — | e2e | ready |
| AC-012 | edge | G a payment has been successfully refunded via the payment gatewayW the owner views the booking details on the studio calendarT the payment status updates to 'Refunded' and the original transaction ID remains visible for audit purposes | — | e2e | ready |
| AC-127 | error | G the user attempts to access the Billing page to view their payment statusW a network failure or server-side exception occurs while retrieving the billing dataT the user sees an error message stating 'Unable to load billing — Try again later.' with an option to refresh the page | — | e2e | ready |
| AC-147 | edge | G the user navigates to a booking detail URL that does not exist or for which they lack permissionsW the data fetch returns a 404 or 403 status codeT the user sees a message stating "Booking not found — This booking may not exist or you may not have access." and all detail sections are hidden | — | e2e | ready |
Code
Scenario
Given / When / Then
Page
Type
Status
| AC-072 | happy | G the client has selected an available photography session from the public booking calendarW the client clicks the slot to proceed with the selectionT the system displays an on-screen confirmation summary including the session type, date, and specific start/end times for the reserved slot | — | e2e | ready |
| AC-073 | edge | G the client is viewing the on-screen confirmation summary for a tentatively reserved slotW the client views the summary on a mobile deviceT the system displays a prominent 'Next: Pay Deposit' button and a countdown timer showing the remaining time in the 15-minute reservation window | — | e2e | ready |
| AC-074 | error | G the client attempts to select a time slot that was just secured by another user in the milliseconds before their clickW the client clicks the now-unavailable slotT the system displays an error message stating the slot is no longer available and prevents the display of the confirmation summary | — | e2e | ready |
| AC-099 | happy | G the public booking calendar is displayed with multiple time slotsW the client selects a specific available time slotT the system applies a temporary lock on that slot and transitions the client to the checkout summary | — | e2e | ready |
| AC-100 | error | G the client is viewing the calendar while a different user successfully confirms a booking for a specific slotW the client attempts to select the same time slot that was just confirmedT the system refreshes the slot status to unavailable and prevents the client from proceeding to checkout | — | e2e | ready |
| AC-101 | edge | G the client has a temporary hold on a time slot that is 1 minute away from the 15-minute expirationW the client remains on the checkout page without submitting payment until the timer reaches zeroT the system releases the hold and displays a notification that the slot has been returned to the public pool | — | e2e | ready |
| AC-102 | edge | G the client is on the final payment submission step for a held slotW the client opens the booking link in a second browser tab and attempts to select a different slotT the system maintains the original hold and prevents the client from holding multiple concurrent slots from the same session | — | e2e | ready |
| AC-150 | edge | G the user navigates to the checkout page without having a session time currently held or selected in their session stateW the page initializes the checkout flowT the system displays the message 'Choose a session time before checking out.' and prevents access to the Stripe Card Entry section | — | e2e | ready |
| AC-103 | happy | G the studio owner has configured active operating hours and at least one future date has available time slotsW the client navigates to the public booking calendar on a mobile deviceT the calendar renders a list of dates and times that are currently unoccupied by other bookings or owner blocks | — | e2e | ready |
| AC-104 | edge | G the studio owner has blocked out all future dates or the current month is fully bookedW the client views the calendar to find a newborn session slotT the system displays a clear 'No availability found' message and prevents the selection of any date on the calendar grid | — | e2e | ready |
| AC-105 | edge | G the client is viewing the calendar for a specific weekW the client selects a date that is past the current system date or before the owner's set lead timeT the calendar renders those dates as disabled and prevents the client from clicking or viewing time slots for those days | — | e2e | ready |
| AC-106 | error | G the system is unable to retrieve availability data due to a database timeoutW the client attempts to load the availability calendarT the system displays a localized error message stating 'Availability could not be loaded' with a button to retry the request | — | e2e | ready |
| AC-143 | edge | G the user navigates to the /sessions page or changes the selected month in the calendarW the application fetches the session availability data from the serverT the user sees a 'Loading sessions…' indicator within the slots area, and interactive elements are temporarily disabled to prevent stale data selection | — | e2e | ready |
| AC-067 | happy | G the owner has marked a specific date as 'Personal' in the management dashboardW the owner views the public booking calendar for that same date rangeT the specific date is rendered as unavailable and prevents any client from selecting time slots for that day | — | e2e | ready |
| AC-068 | happy | G the owner has created a 'Blocked' entry that covers only a partial time window (e.g., 9:00 AM to 12:00 PM) on a specific dayW the owner checks the public availability for that dayT the system hides only the time slots overlapping the blocked window while leaving the remaining hours available for booking | — | unit | ready |
| AC-069 | edge | G the owner attempts to mark a date as 'Personal' that already contains existing 'Confirmed' client bookingsW the owner saves the block in the management viewT the system displays a warning about the conflict but proceeds to hide all remaining open slots on that date from the public calendar | — | e2e | ready |
| AC-070 | happy | G the owner has an active 'Personal' block on a date but deletes that block in the management viewW the owner refreshes the public calendar viewT the date immediately reverts to the default availability based on the owner's recurring operating hours | — | e2e | ready |
| AC-071 | edge | G the owner is creating a 'Blocked' time slot that spans across midnight into the following dayW the owner saves the multi-day blockT the public calendar hides the relevant time slots on both affected dates correctly | — | unit | ready |
| AC-089 | happy | G the owner is on the studio availability settings pageW the owner sets a session duration of 60 minutes and a buffer time of 15 minutesT the system displays the next available start time for a new booking exactly 75 minutes after the end of the previous confirmed session | — | e2e | ready |
| AC-090 | error | G the owner is configuring booking windowsW the owner attempts to save a buffer time value that is a negative numberT the system prevents the save and displays a validation error stating that buffer time must be zero or a positive integer | — | e2e | ready |
| AC-091 | edge | G the owner has set a 30-minute buffer and a session ends at 4:45 PM with the studio closing at 5:00 PMW the owner views the public calendar for that dayT the system hides the final slot because the combined duration and buffer would exceed the defined operating hours | — | e2e | ready |
| AC-092 | happy | G the owner is setting the booking windowW the owner sets the 'Booking Lead Time' to 24 hoursT the public calendar automatically hides all time slots occurring within the next 24 hours from the current timestamp | — | unit | ready |
| AC-093 | happy | G the owner has configured a 15-minute buffer between sessionsW the owner views two back-to-back sessions on the internal calendarT the system renders a visual gap or indicator between the two blocks representing the protected buffer time | — | e2e | ready |
| AC-094 | happy | G the owner is defining the maximum booking windowW the owner sets the calendar to only allow bookings up to 30 days in advanceT the public calendar disables all date selection and time slots for any day beyond the 30-day limit | — | unit | ready |
Code
Scenario
Given / When / Then
Page
Type
Status
| AC-025 | happy | G a booking has a status of 'Confirmed' and a recorded deposit paymentW the client clicks the 'Download Receipt' button for the depositT the system generates and downloads a PDF file containing the studio name, payment date, deposit amount, and transaction ID | — | e2e | ready |
| AC-026 | happy | G the client has paid both the deposit and the final balance for a sessionW the client selects the option to download the full booking confirmationT the generated PDF includes a consolidated financial summary showing both the deposit and final balance as 'Paid' | — | e2e | ready |
| AC-027 | error | G a booking exists but the final balance has not yet been paidW the client attempts to download the receipt for the final balanceT the download action is disabled or hidden, preventing the generation of a receipt for funds not yet received | — | e2e | ready |
| AC-028 | error | G the system encounters a server-side error during the PDF generation processW the client clicks the download button for their booking confirmationT the system displays a notification stating the document could not be generated and to try again shortly | — | e2e | ready |
| AC-029 | edge | G a client has a booking that was fully refunded by the studio ownerW the client downloads the payment receipt for that bookingT the PDF document explicitly displays a 'Refunded' watermark or status line next to the original transaction amount | — | e2e | ready |
| AC-149 | edge | G the user has requested the booking detail page and the data is currently being fetchedW the page is in an asynchronous transit stateT the user sees a placeholder or spinner with the text "Loading booking details…" and the Payment & Receipt Panel is temporarily obscured | — | e2e | ready |
| AC-037 | happy | G the client has an existing account and is on the login pageW the client submits their registered email address and correct passwordT the system authenticates the session and redirects the client to their personal booking dashboard | — | e2e | ready |
| AC-038 | happy | G the client is on the login page and selects the 'Magic Link' optionW the client enters their email and clicks the link received in their inboxT the system validates the unique token and logs the client into the portal without requiring a password | — | e2e | ready |
| AC-039 | error | G the client is on the login pageW the client attempts to log in with an email address that is not registered in the systemT the system displays a generic error message and does not send a magic link or reveal account existence | — | e2e | ready |
| AC-040 | edge | G the client has requested a magic link and received the emailW the client clicks the magic link after it has expired or has already been used onceT the system displays an 'Expired Link' message and prompts the client to request a new login link | — | e2e | ready |
| AC-041 | error | G the client is on the login pageW the client enters a password that does not match the stored credentials for that emailT the system denies access and displays an 'Invalid credentials' error message | — | e2e | ready |
| AC-120 | edge | G the user has navigated to the login page and has not yet interacted with any input fieldsW the page initialisesT the user sees the message 'Sign in to continue — Enter your credentials or request a magic link' and the login form remains interactive for data entry | — | e2e | ready |
| AC-122 | edge | G the user has submitted their credentials or requested a magic linkW the authentication request is being processed by the serverT the user sees the text 'Authenticating…' and all form inputs and submission buttons are disabled to prevent duplicate requests | — | e2e | ready |
| AC-130 | edge | G the user has navigated to the Forgot Password page to regain access to their portalW the page is first rendered and no email input has been submittedT the user sees the message 'Reset your password — Enter the email for your account to receive reset instructions' within the form section alongside help links | — | e2e | ready |
| AC-131 | edge | G the user has successfully navigated to the reset password page with a valid tokenW the page finishes validating the token and the form is ready for inputT the user sees the 'New Password Form' section with the title 'Set a new password' and a description to 'Enter a secure new password to regain access.' | — | e2e | ready |
| AC-132 | edge | G the user has entered a valid email address and clicked the submit buttonW the system is processing the token generation and dispatching the emailT the user sees a non-interactive state with the text 'Sending reset email…' to indicate the background process is active | — | e2e | ready |
| AC-133 | error | G the user accesses the page with a token that is malformed, previously used, or past its expiration dateW the system attempts to verify the token authenticityT the user sees an error message 'Invalid or expired token' and a call to action to 'Request a new reset link' in the Token Help section. | — | e2e | ready |
| AC-134 | error | G the user has submitted their email address but the mail server or API is unreachableW the request fails to complete successfullyT the user sees an alert stating 'Unable to send reset email — Try again later' and is permitted to attempt the submission again | — | e2e | ready |
| AC-135 | edge | G the user has just landed on the reset password URL containing a verification tokenW the application begins the background process of verifying the token with the serverT the user sees a 'Validating token…' status indicator and the New Password Form remains hidden until verification is complete. | — | e2e | ready |
| AC-142 | edge | G the user has requested the Billing Payment Methods page and the authentication token is validW the application is fetching the payment method data from the secure vaultT the Saved Cards List section displays a placeholder or spinner with the text 'Loading payment methods…' until the data is ready for display | — | e2e | ready |
| AC-160 | error | G the user has submitted a change to their email, password, or account statusW the network request to the security API fails or returns a server errorT the user sees a notification stating 'Unable to save settings — Please try again later.' | — | e2e | ready |
| AC-162 | edge | G the user has navigated to the signup page and has not yet entered any data into the registration formW the page first loads for a new visitorT the 'Registration Form' section displays the heading 'Create an account' and subtext 'Join to manage bookings and payments' to encourage portal registration | — | e2e | ready |
| AC-164 | edge | G the user has clicked the submit button on the registration form with valid credentialsW the account creation request is being processed by the backendT the 'Registration Form' is replaced by a loading indicator and the text 'Creating account…' while the action is in progress | — | e2e | ready |
| AC-016 | happy | G the client is on the profile or booking update page within the portalW the client modifies their phone number and adds specific baby care preferences in the session notes fieldT the system saves the changes and displays a success notification confirming the information has been updated | — | e2e | ready |
| AC-017 | error | G the client is editing their contact informationW the client attempts to save an invalid email address format or a non-numeric phone numberT the system prevents the save and displays specific validation errors next to the invalid fields | — | e2e | ready |
| AC-018 | edge | G the client is entering session-specific notes for their upcoming shootW the client enters a text string that exceeds the maximum character limit for the notes fieldT the system restricts further input or provides a validation error indicating the character limit has been reached | — | e2e | ready |
| AC-019 | happy | G the client has an existing session note saved in the systemW the client clears all text from the session notes field and saves the updateT the system updates the record to an empty state without returning a validation error | — | integration | ready |
| AC-159 | edge | G the user has successfully navigated to the Account Settings page and no previous data changes have been initiatedW the page renders the Change Email, Change Password, and Delete Account sectionsT the user sees the message 'Account settings — Update your email, password, or delete your account.' as the primary instructional text | — | e2e | ready |
| AC-166 | edge | G the user has navigated to the Profile page and the account data is being fetched from the serverW the data retrieval is in a pending stateT the user sees a 'Loading profile' indicator to communicate that the information is being prepared | — | e2e | ready |
| AC-167 | edge | G the user has no contact information or session preferences saved in their accountW the Profile page loads with null or empty data fieldsT the user sees the message 'Complete your profile — Add contact details so the studio can reach you' prompting them to provide necessary details | — | e2e | ready |
| AC-033 | happy | G the client has both completed sessions from last month and scheduled sessions for next monthW the client navigates to the booking history pageT the portal displays the sessions in a single list sorted by date, with the most recent upcoming session appearing first followed by the chronological history of past sessions | — | e2e | ready |
| AC-034 | happy | G the client has a session that was canceled by the studio ownerW the client views their chronological list of sessionsT the portal displays the canceled session in the list but applies a distinct 'Canceled' status label to differentiate it from active or completed sessions | — | e2e | ready |
| AC-035 | edge | G the client has a session scheduled for todayW the client views the session list on the booking history pageT the portal displays the specific studio location address and a 'Today' indicator next to the session time | — | e2e | ready |
| AC-036 | error | G the client's session data fails to load due to a database connection errorW the client refreshes the booking history pageT the portal displays a localized error message stating 'Unable to load session history' and provides a manual retry button | — | e2e | ready |
| AC-128 | edge | G the user has navigated to the Bookings page and the system is fetching their session historyW the data retrieval process is in progressT the user sees a 'Loading bookings…' placeholder within the Bookings Timeline section to indicate that information is being retrieved | — | e2e | ready |
| AC-129 | edge | G the user has successfully authenticated and navigated to the Bookings pageW the system returns no records for past or upcoming sessionsT the Bookings Timeline section displays the message 'You don't have any sessions yet.' with no chronological list or download links visible | — | e2e | ready |
| AC-152 | edge | G the user has no scheduled sessions in their history or future calendarW the dashboard page is accessed and the session data is fetchedT the 'Upcoming Sessions Summary' section displays 'No upcoming sessions' and provides a call-to-action to 'Book a newborn session or check availability' | — | e2e | ready |
| AC-154 | error | G a server or network failure occurs while retrieving dashboard dataW the user attempts to load the dashboard pageT the user sees 'Unable to load dashboard' with the message 'We couldn't retrieve your bookings or billing' and an option to 'Try again' | — | e2e | ready |
| AC-156 | edge | G the dashboard data request is in a pending stateW the user navigates to the dashboard URLT the UI displays a 'Loading dashboard' indicator within the session summary area to communicate progress | — | e2e | ready |
| AC-001 | happy | G a client is logged into the portal and has three existing bookingsW the owner views the client's booking history pageT the portal displays only the bookings associated with that client's unique account ID | — | e2e | ready |
| AC-002 | error | G a client is logged in and attempts to access a booking confirmation URL belonging to a different clientW the owner modifies the URL ID parameter to match another user's recordT the portal returns a 403 Forbidden error or redirects to the dashboard with an 'Access Denied' message | — | e2e | ready |
| AC-003 | error | G a client session has timed out or the client has manually logged outW the owner attempts to navigate directly to the booking history path via a bookmarked linkT the portal denies access and redirects the request to the login screen | — | e2e | ready |
| AC-004 | edge | G a client has no booking history recorded in the systemW the owner accesses the booking history dashboardT the portal displays an empty state message without leaking any placeholder or administrative data | — | e2e | ready |
| AC-124 | edge | G the user has successfully authenticated and navigated to the Billing pageW the system is fetching subscription and usage data from the serverT a 'Loading billing details…' message or spinner is displayed in place of the page content to indicate progress | — | e2e | ready |
| AC-161 | edge | G the user clicks the submit button to update their account security credentialsW the system is processing the update request with the authentication providerT the user sees a 'Saving settings…' indicator and the interactive elements within the section are disabled | — | e2e | ready |
| AC-163 | error | G the user has submitted the registration form with invalid or missing required dataW the server returns a validation error or the submission failsT the 'Registration Form' displays the message 'Signup failed — Please check the highlighted fields' and highlights specific input errors for correction | — | e2e | ready |
| AC-005 | happy | G a client has an upcoming photography session scheduled for next weekW the owner provides access to the self-service dashboard via the client portalT the dashboard displays the session date, start time, end time, and studio location address clearly in the 'Upcoming Sessions' section | — | e2e | ready |
| AC-006 | edge | G a client has a session scheduled but the photographer has not yet provided specific preparation notes or location details in the booking recordW the owner enables the dashboard for that clientT the dashboard displays the session time but shows a clear 'Notes pending' or 'TBD' placeholder instead of leaving the preparation section blank or broken | — | e2e | ready |
| AC-007 | error | G a client is viewing a session that is currently marked as 'Pending Deposit' in the systemW the owner directs the client to the self-service dashboardT the dashboard displays a prominent warning that the time slot is not yet secured and provides a direct link to the payment processing page | — | e2e | ready |
| AC-008 | edge | G a client has a session scheduled within the next 24 hoursW the owner allows the client to view the dashboardT the dashboard displays the session details but disables the 'Reschedule' button, replacing it with a message to contact the studio directly for last-minute changes | — | e2e | ready |
| AC-169 | edge | G the user navigates to the Home page and no dynamic marketing content or feature data is returned from the CMSW the page finishes initialization with a null or empty data setT the user sees a welcome message 'Welcome — Discover how the studio booking system simplifies scheduling' to orient them to the product's purpose | — | e2e | ready |
| AC-171 | error | G a network failure or server-side exception occurs while fetching the marketing landing page contentW the page fails to retrieve the required data for the feature and hero sectionsT the user sees the message 'Content unavailable — We couldn't load some marketing content. Try refreshing.' along with an option to reload the page | — | e2e | ready |
Code
Scenario
Given / When / Then
Page
Type
Status
| AC-095 | happy | G the owner is viewing the availability management interfaceW the owner selects a specific date and time range to create a manual block and saves the entryT the system records the block and prevents the public booking calendar from displaying those specific time slots as available | — | e2e | ready |
| AC-096 | error | G the owner is creating a new time blockW the owner attempts to save a block where the end time is chronologically before the start timeT the system prevents the save and displays a validation error indicating the end time must be after the start time | — | e2e | ready |
| AC-097 | edge | G the owner is defining a period of personal leaveW the owner attempts to save a block with a duration of zero minutes (start and end time are identical)T the system rejects the entry and requires a minimum duration for a block to be valid | — | unit | ready |
| AC-098 | happy | G the owner is managing a previously created manual blockW the owner modifies the start or end time of the existing block and saves the changesT the system updates the block and immediately synchronizes the public calendar to reflect the new unavailable time window | — | integration | ready |
| AC-063 | happy | G a booking exists with a 'Confirmed' status and a successful $50.00 Stripe depositW the owner selects the 'Cancel and Refund' option for this sessionT the booking status changes to 'Canceled' and the payment gateway initiates a full $50.00 refund to the original payment method | — | e2e | ready |
| AC-064 | error | G the owner has initiated a cancellation for a booking that has an active depositW the owner confirms the cancellation but the payment gateway returns a 'Refund Failed' errorT the system marks the booking as 'Cancellation Pending' and displays a specific error message advising the owner to process the refund manually via the Stripe dashboard | — | e2e | ready |
| AC-065 | edge | G a booking was manually added by the owner and has no digital deposit record associated with itW the owner attempts to cancel the sessionT the system cancels the session but bypasses the refund trigger, displaying a confirmation that no digital refund was necessary | — | e2e | ready |
| AC-066 | edge | G a booking has already been canceled and its refund is currently in 'Pending' status at the gatewayW the owner attempts to click the 'Cancel and Refund' button againT the action is disabled or returns a validation message stating that a refund is already in progress for this transaction | — | e2e | ready |
| AC-080 | happy | G the owner is viewing the calendar management dashboard and has opened the manual booking formW the owner enters a valid client name, contact details, and selects an open time slot to save the bookingT the system records the booking and immediately updates the public calendar to show that time slot as unavailable | — | e2e | ready |
| AC-081 | error | G the owner is manually entering a booking for a client who calledW the owner attempts to save the booking with a missing client name or an invalid email formatT the system prevents the save and highlights the specific fields requiring correction | — | e2e | ready |
| AC-082 | edge | G the owner is filling out the manual booking form for a specific time slotW the owner attempts to save a manual booking for a slot that was confirmed by a web portal client while the owner was typingT the system displays a conflict error message and prevents the manual booking from overwriting the existing confirmed session | — | e2e | ready |
| AC-083 | edge | G the owner is manually adding a booking for an off-site shootW the owner selects a time range that partially overlaps with an existing recurring 'Personal' blockT the system allows the booking to be saved but displays a warning that it conflicts with the owner's set availability | — | e2e | ready |
| AC-137 | edge | G the user has navigated to the Booking Edit page and no changes have been made to the existing fieldsW the form is displayed to the ownerT the user should see the current booking details with the prompt 'Edit booking — Modify the booking details and save changes.' and all input fields should be available for editing | — | e2e | ready |
| AC-140 | edge | G the user has modified booking details and clicked the save buttonW the update request is being processed by the serverT the user should see a 'Saving changes…' overlay or status indicator and all form inputs should be disabled to prevent duplicate submissions | — | e2e | ready |
| AC-144 | edge | G the user has navigated to the Studio Bookings List pageW the booking data is currently being fetched from the serverT the Bookings Table section displays a 'Loading bookings…' indicator to inform the user of progress | — | e2e | ready |
| AC-145 | edge | G the user has active filters or no existing records in the systemW the data fetch completes with zero resultsT the Bookings Table displays 'No bookings found — Try clearing filters or add a manual booking' with a call to action to add a manual booking | — | e2e | ready |
| AC-146 | error | G a network failure or server-side exception occurs during data retrievalW the system fails to retrieve the booking listT the Bookings Table displays 'Unable to load bookings — Try again later' to communicate the system failure | — | e2e | ready |
| AC-168 | edge | G the owner has completed the manual booking form with valid client and schedule detailsW the owner submits the form to create the bookingT the manual booking form is disabled and a loading overlay or indicator appears with the text "Saving booking…" until the process completes | — | e2e | ready |
| AC-055 | happy | G the studio owner has set recurring operating hours and blocked out specific dates in the dashboardW the owner views the calendar interface on a mobile deviceT the interface displays available time slots for newborn sessions in real-time, accurately reflecting both recurring hours and manual block-outs | — | e2e | ready |
| AC-056 | edge | G a client is currently in the process of booking a specific newborn session slot on the public siteW the owner refreshes the mobile calendar viewT the specific slot appears as 'Pending' or 'Unavailable' to prevent the owner from double-booking that time manually | — | e2e | ready |
| AC-057 | edge | G the owner is viewing the calendar interface during a period of high booking activityW the owner attempts to view a date range that contains no available slots due to full bookingsT the calendar displays a clear 'No Availability' indicator for those dates rather than appearing broken or empty | — | e2e | ready |
| AC-058 | error | G the studio's availability data fails to load due to a server-side synchronization errorW the owner opens the mobile calendar interfaceT the interface displays an 'Availability unavailable' error message and prevents the owner from attempting to secure a slot based on stale data | — | e2e | ready |
| AC-139 | error | G the user attempts to load their real-time availability on the calendar interfaceW a network failure or server-side exception occurs during the data fetchT the Calendar Controls & View section displays "Unable to load calendar — Try refreshing or check your connection" with a visible option to retry the request | — | e2e | ready |
| AC-170 | edge | G the user attempts to access the marketing landing page to view availabilityW the application is fetching the necessary assets and studio configuration dataT the user sees a 'Loading homepage' indicator to signify that the content is being prepared for display | — | e2e | ready |
| AC-107 | happy | G the owner is on the studio settings page and selects a specific day of the weekW the owner defines a start time, an end time, and a standard session duration for that recurring dayT the system saves the weekly schedule and updates the public booking interface to only show time slots within those parameters | — | e2e | ready |
| AC-108 | error | G the owner is configuring recurring operating hours for a specific dayW the owner attempts to save a session duration that is longer than the total window between the start and end timeT the system prevents the save and displays a validation error stating the session duration exceeds the operating window | — | e2e | ready |
| AC-109 | edge | G the owner is updating the recurring session duration from 60 minutes to 30 minutesW the owner saves the new duration settingT the system recalculates all future unbooked time slots on the public calendar to reflect the new 30-minute intervals | — | integration | ready |
| AC-110 | happy | G the owner wants to close the studio for a specific recurring day (e.g., every Sunday)W the owner toggles the 'Active' switch for that day to the off position and savesT the system removes all availability for that day from the public booking calendar indefinitely | — | e2e | ready |
| AC-111 | error | G the owner is entering recurring hours for a MondayW the owner enters an invalid time format or leaves the start time blankT the system highlights the invalid field and prevents the schedule from being updated | — | e2e | ready |
| AC-112 | edge | G the owner is setting a recurring session durationW the owner enters a duration of zero or a negative numberT the system displays a validation error requiring the session duration to be a positive integer | — | e2e | ready |
| AC-158 | edge | G the user has modified their availability settings and clicks the save buttonW the system initiates the data persistence request to update recurring hours, booking windows, or manual blocksT the user sees a 'Saving availability…' overlay or status indicator, and all interactive input fields are temporarily disabled to prevent concurrent modifications until the request completes | — | e2e | ready |
| AC-084 | happy | G the owner is viewing the centralized calendar dashboardW the owner toggles between the monthly and weekly view optionsT the system re-renders the scheduled appointments to fit the selected time scale without losing the current date context | — | e2e | ready |
| AC-085 | happy | G the owner is viewing the weekly calendar view for the current weekW the owner clicks the 'Next' navigation arrowT the calendar view updates to display the appointments for the following seven-day period | — | e2e | ready |
| AC-086 | edge | G there are multiple appointments scheduled at the same time or overlapping on a specific dayW the owner views the monthly calendar gridT the system displays a 'more' indicator or stacks the appointment labels to ensure all sessions are discoverable within the date cell | — | e2e | ready |
| AC-087 | edge | G the owner attempts to load a month that contains an unusually high volume of historical and future dataW the owner selects that specific month in the calendarT the system displays a loading state followed by the rendered appointments, ensuring no partial data is shown if the full set fails to fetch | — | e2e | ready |
| AC-088 | error | G the calendar view is open and a database error occurs while fetching appointment detailsW the owner attempts to refresh the calendar viewT the system displays a specific error message stating that appointment data could not be retrieved and provides a manual refresh option | — | e2e | ready |
| AC-136 | edge | G the user is authenticated and navigating to the monthly or weekly calendar viewW the system retrieves no scheduled appointments for the selected date rangeT the Calendar Controls & View section displays the message "Your calendar is empty for this range" while maintaining access to the Manual Booking CTA | — | e2e | ready |