Demo ModeYou're viewing a sample project.Sign up to create your own projects
Read-only access

Loading...

0/503
passed
happy
G the dive centre owner is viewing a specific review on their storefront that does not yet have a responseW the owner submits a text response within the character limitT the response should be saved and displayed publicly immediately below the original review with the label 'Response from the Owner'
e2e
ready
error
G the dive centre owner is composing a response to a reviewW the owner attempts to submit an empty response or a response consisting only of whitespaceT the system should prevent submission and display a validation error indicating that a response message is required
e2e
ready
edge
G the dive centre owner has already published a response to a specific reviewW the owner views the same review on their management panelT the 'Respond' button should be replaced with options to 'Edit' or 'Delete' the existing response, preventing multiple distinct responses to a single review
e2e
ready
happy
G the dive centre owner is editing an existing responseW the owner saves the modified textT the public storefront should update to show the new text and display a 'Last Edited' timestamp next to the response
e2e
ready
edge
G the dive centre owner is in the process of submitting a responseW the original reviewer deletes their review exactly when the owner clicks submitT the system should display a notification that the review is no longer available and cancel the response submission
e2e
ready
happy
G the dive centre owner has a published response on a reviewW the owner selects the 'Delete' option and confirmsT the response should be permanently removed from the public storefront and the management panel should restore the 'Respond' button
e2e
ready
happy
G a dive center owner is viewing their public storefrontW the owner views the reviews sectionT the interface displays both the customer reviews and the owner's public responses
e2e
ready
happy
G the storefront data is being retrieved from the serverW the page is loadingT a loading state is shown for the storefront and reviews section
e2e
ready
happy
G the dive centre owner is viewing a review on their storefront and selects the 'Report' optionW the owner selects a valid reason from the reporting categories and submits a detailed explanationT the system should confirm the report has been submitted for moderation and flag the review as 'Under Review' in the owner's management view
e2e
ready
error
G the dive centre owner has opened the review reporting formW the owner attempts to submit the report without selecting a violation category or providing the required explanation textT the system should block the submission and display a validation error highlighting the missing required fields
e2e
ready
edge
G the dive centre owner has already submitted a report for a specific review and the report is currently pending moderationW the owner attempts to report the same review a second timeT the system should disable the report action and display a message stating that a report for this review is already being processed
e2e
ready
edge
G the dive centre owner is reporting a review and the review is deleted by the original author during the reporting processW the owner clicks the final 'Submit Report' buttonT the system should display a message stating that the review is no longer available and close the reporting interface without creating a moderation ticket
e2e
ready
happy
G there are pending reports of fraudulent reviewsW the administrator views the Content Queue in the Quick Actions sectionT the administrator should see a count of flagged reviews and a direct link to the moderation interface
e2e
ready
error
G the platform data service is unavailableW the administrator attempts to load the Admin DashboardT an error state message should be displayed indicating that admin data is currently unavailable
e2e
ready
happy
G there are reviews reported as fraudulent or violating guidelinesW the admin views the Flagged Content QueueT a list of reported reviews is displayed with the reason for the report and the content of the review
e2e
ready
happy
G a specific flagged review is selected in the queueW the admin clicks the 'Approve' or 'Reject' button in the Content Review PanelT the moderation action is processed and the item is removed from the queue
e2e
ready
happy
G there are no pending flags for reviews or photosW the admin navigates to the content moderation pageT the 'empty' UI state is displayed indicating no content requires review
e2e
ready
happy
G the admin is viewing the user management table and a user has been flagged for fraudulent activity or reportingW the admin selects the 'Suspend' action for that specific user recordT the user's status is updated to 'Suspended' in the table and they are prevented from submitting further reviews
e2e
ready
happy
G the admin is on the user management page and searches for a specific user reported for spamW the admin uses the search bar and role filtersT the table dynamically updates to show only the users matching the criteria, including their last login and current status
e2e
ready
error
G the admin attempts to load the user management list but the server is unreachableW the page is initialized or refreshedT the 'error' UI state is displayed with a message stating 'Unable to load users'
e2e
ready
happy
G a dive center owner is viewing the moderation queueW a review is flagged for community guideline violationsT the content appears in the Flagged Content Queue for administrative review
e2e
ready
error
G the moderation system is experiencing a technical failureW the owner attempts to access the flagged content queueT a moderation error message is displayed to the user
e2e
ready
happy
G the diver is viewing the reviews section of a dive site and multiple reviews exist with different marine life tagsW the diver selects a specific marine life tag from the filter list (e.g., 'Sharks')T the review list should update to display only reviews that contain the 'Sharks' tag while hiding all others
e2e
ready
happy
G the diver has an active marine life tag filter applied to the reviewsW the diver selects an additional, different marine life tag (e.g., 'Manta Rays')T the review list should update to show only reviews that contain both of the selected tags (Boolean AND logic)
e2e
ready
edge
G the diver is viewing the review list for a dive siteW the diver selects a marine life tag that is present in the global database but has not been tagged in any reviews for this specific siteT the review list should display an empty state message indicating that no reviews at this site have mentioned that specific species
e2e
ready
happy
G the diver has active marine life filters applied and the list is filteredW the diver deselects all active marine life tagsT the filter should be removed and the full list of reviews for that site should be restored in its original order
unit
ready
edge
G the diver is viewing the filter options for a dive site's reviewsW the diver views the available tags in the filter sidebarT the system should only display tags that appear in at least one review for the current dive site to prevent 'dead-end' filtering
e2e
ready
happy
G a user is viewing the interactive discovery mapW the user enters a marine life tag like 'Sharks' into the search panelT the map canvas updates to show markers only for sites matching that marine life criteria
e2e
ready
happy
G a user searches for a specific marine species on the mapW no dive sites have reported sightings of that speciesT the interface displays a message stating no sites were found
e2e
ready
happy
G the diver is on the review submission page for a specific dive siteW the diver selects a star rating from 1 to 5, enters a descriptive text review, and clicks the submit buttonT the system should save the review, display it in the site's review feed, and show a success confirmation to the diver
e2e
ready
error
G the diver has opened the review form for a dive siteW the diver attempts to submit the review without selecting a star ratingT the system should prevent submission and display a validation error indicating that a star rating is mandatory
e2e
ready
happy
G the diver is filling out a review for a dive siteW the diver enters only a star rating but leaves the text review field empty and clicks submitT the system should allow the submission and display the rating with a 'No comment provided' placeholder or empty text area
e2e
ready
edge
G the diver has already submitted a review for a specific dive siteW the diver attempts to access the 'Write a Review' form for that same site againT the system should redirect the diver to their existing review with an option to edit it rather than creating a duplicate entry
e2e
ready
error
G the diver is entering a text reviewW the diver enters a text block that exceeds the maximum character limit (e.g., 2000 characters)T the system should prevent submission and display a character count error highlighting the excess length
e2e
ready
happy
G a diver is viewing a dive trip they recently completedW the user scrolls to the reviews sectionT they can view existing star ratings and text reviews from the community
e2e
ready
happy
G a dive trip has just been listed and has no feedbackW a user views the trip detailsT the reviews section indicates that no reviews have been submitted yet
e2e
ready
happy
G the diver is on the 'Write a Review' page for a dive site and has selected several underwater photos of marine lifeW they submit the review with the attached photosT the review should be published displaying the photos in a gallery format alongside the text and rating
e2e
ready
error
G the diver is in the photo upload section of the review formW they attempt to upload a file that is not an image format (e.g., .mp4 or .pdf)T the system should reject the file and display a validation error stating that only image files (JPG, PNG) are supported
e2e
ready
edge
G the diver is selecting photos for their reviewW they attempt to upload an individual image file that exceeds the maximum size limit (e.g., 10MB)T the system should block the upload and display a message indicating the file is too large
e2e
ready
edge
G the diver has already attached the maximum allowed number of photos (e.g., 5) to the review formW they attempt to add another photoT the upload button should be disabled or an error should appear stating the maximum photo limit has been reached
e2e
ready
happy
G the diver has uploaded several photos to a draft reviewW they click the 'remove' icon on a specific photo thumbnailT the photo should be detached from the review and the thumbnail should disappear from the form before submission
e2e
ready
error
G the diver is submitting a review and the photo upload process fails due to a server-side storage errorW they click the 'Submit' buttonT the system should retain the review text and the selected photos in the form while displaying an error message allowing the user to retry the submission
e2e
ready
happy
G a diver has uploaded marine life photos as part of a review and it has been flagged for moderationW the admin selects that item in the Flagged Content QueueT the Content Review Panel displays the attached image files for visual inspection
e2e
ready
happy
G a diver is editing a specific dive log entryW the user selects marine life photos from their deviceT the photos are uploaded and displayed within the Photo Gallery for that log
e2e
ready
happy
G a diver is saving a new dive log with photo attachmentsW the save process is initiatedT a loading state is displayed indicating the log is being saved
e2e
ready
happy
G the liveaboard business owner is on the service quality dashboard with at least 12 months of historical review dataW the owner views the aggregated rating chart over the past yearT the system should display a line or bar graph showing the average star rating calculated for each month in the selected period
e2e
ready
edge
G the liveaboard business owner is viewing the ratings dashboard for a newly registered vessel with zero reviewsW the dashboard attempts to render the rating trend chartT the system should display a placeholder chart with a message stating that more data is needed to generate a trend report
e2e
ready
edge
G the liveaboard business owner is viewing the aggregated rating chartW the owner selects a custom date range where reviews exist for only one week but not for the rest of the periodT the system should display data points for the week with reviews and show a zero or null value for the periods with no activity, rather than interpolating false data
e2e
ready
error
G the liveaboard business owner is viewing the trend dashboard and the background analytics service fails to calculate the aggregatesW the owner attempts to refresh the rating trend viewT the system should display an error message indicating that the trend data is currently unavailable and provide a button to manually retry the calculation
e2e
ready
edge
G the liveaboard business owner is viewing the aggregated rating chart which includes reviews that have been flagged and hidden by moderatorsW the system calculates the monthly average ratingT the system should exclude all hidden or deleted reviews from the aggregate calculation to ensure the rating reflects only verified public sentiment
e2e
ready
happy
G the administrator needs to analyze platform growth and user engagement trendsW viewing the Time Series Metrics frameT the page renders interactive charts for signups over time and DAU/MAU ratios
e2e
ready
error
G there is a database connection failure during the metric aggregation processW the page attempts to load the analytics framesT the error UI state is displayed informing the administrator that analytics are currently unavailable
e2e
ready
happy
G a liveaboard owner is viewing platform analyticsW the owner navigates to the time series sectionT aggregated rating trends and service quality metrics are displayed over the selected timeframe
e2e
ready
happy
G a new liveaboard owner has not yet received any reviewsW they view the analytics pageT an 'Insufficient data' message is displayed in the metric frames
e2e
ready
happy
G a diver is in the booking flow for a dive site requiring an 'Advanced Open Water' certification and has a matching verified credential in their vaultW the diver proceeds to the checkout or confirmation stepT the system should automatically validate the credential against the site's requirements and permit the booking without requiring manual document upload
e2e
ready
error
G a diver is booking a trip to a site requiring a 'Deep Diver' specialty but only possesses a 'Beginner/Open Water' certification in their vaultW the diver attempts to confirm the bookingT the system should block the booking and display a message stating that the diver's current credentials do not meet the site's safety requirements
e2e
ready
error
G a diver has a matching certification in their vault, but the document's verification status is currently 'Pending Review' or 'Rejected'W the system performs the automatic check during the booking flowT the system should treat the credential as invalid for automatic verification and prompt the diver to provide a verified document or wait for approval
unit
ready
edge
G a diver is booking a trip for multiple people and one of the guest divers does not have a linked account or vaultW the primary user submits the booking detailsT the system should identify the missing credentials for the guest and provide an option to manually upload a file or send a verification request to the guest
e2e
ready
edge
G a diver has a valid certification that is set to expire before the date of the scheduled dive tripW the system performs the automated verification during the booking processT the system should flag the certification as invalid for that specific trip date and notify the diver that a renewed credential is required for the excursion
unit
ready
happy
G a diver is completing a new bookingW they reach the passenger details stepT the system automatically verifies their uploaded credentials against the trip requirements
unit
ready
happy
G the booking flow is initiatedW the system is validating credentials in the backgroundT a loading state is shown indicating that the booking is being processed
unit
ready
happy
G a diver has a professional insurance document on file that reaches its expiration dateW the system date matches the insurance expiration dateT the dive center owner should receive an immediate notification stating the professional's insurance has lapsed
integration
ready
happy
G a diver's certification is set to expire in 30 daysW the system reaches the 30-day pre-expiration thresholdT the dive center owner should receive a warning notification identifying the diver and the upcoming expiration date
integration
ready
edge
G the dive center owner has multiple divers with expiring documents on the same dayW the notification trigger occursT the system should generate a consolidated notification or a list of all affected divers rather than individual alerts
unit
ready
edge
G a diver has uploaded a new, valid certification to replace an expiring oneW the old certification reaches the expiration thresholdT no notification should be sent to the dive center owner regarding the old document
unit
ready
error
G a diver's document was uploaded with an incorrect or missing expiration dateW the system attempts to process the notification queueT the system should flag the record for administrative review in the owner's dashboard instead of failing to send any alert
e2e
ready
happy
G a dive center owner is managing their storefrontW a diver's certification or professional insurance is nearing expirationT a notification alert is displayed within the booking preferences and notifications section
e2e
ready
happy
G the user is viewing their vault listW a certification has an upcoming expiration dateT the system displays an expiration alert banner to the owner
e2e
ready
happy
G the diver is viewing their certification vault and has at least one verified credentialW the diver selects the option to generate a shareable QR codeT the system should generate a unique QR code and a corresponding secure URL that grants temporary, read-only access to the diver's credentials
e2e
ready
happy
G the diver has generated a QR code and is in an environment without internet accessW the diver displays the previously generated QR code on their device screen for a dive center to scanT the QR code should remain visible and scannable regardless of the diver's current connectivity status
e2e
ready
edge
G the diver is generating a sharing link and the system allows for an expiration durationW the diver sets the access duration to its minimum allowable limit (e.g., 1 hour) and confirmsT the system should ensure the link and QR code automatically invalidate and deny access immediately after the selected time has elapsed
e2e
ready
error
G the diver's certification vault is currently empty or contains only unverified/draft documentsW the diver attempts to generate a sharing QR codeT the system should disable the generation button and display a message stating that at least one valid credential must be present to share the vault
e2e
ready
happy
G the diver has an active shared QR code/link currently in use by a dive centerW the diver manually selects the 'Revoke Access' option within their vault settingsT the system should immediately expire the QR code and link, causing any subsequent attempts to view the vault via that link to result in an 'Access Expired' message
e2e
ready
error
G the user is on the Certification Details pageW the system fails to retrieve the sharing metadataT an error state is displayed stating 'Unable to load certification'
e2e
ready
happy
G the diver is in the certification vault and has at least one verified credentialW the diver selects the 'Generate Share Link' option with a specific expiration timeT the system should generate a unique URL and a QR code that displays the diver's name and a list of verified certifications to anyone viewing the link
e2e
ready
error
G the diver is in the process of generating a shareable linkW the diver attempts to confirm the generation without selecting an expiration durationT the system should prevent the link generation and display a validation error requiring a validity period to be chosen
e2e
ready
edge
G a diver has a mix of verified and unverified (pending review) credentials in their vaultW the diver generates a sharing link for the vaultT the resulting public view should only display the verified credentials and hide any documents that are still in a pending or unverified state
e2e
ready
happy
G the diver has an active sharing link that has reached its set expiration timeW a third party attempts to access the URL or scan the QR codeT the system should display a message stating that the access has expired and no certification data should be visible
e2e
ready
edge
G the diver is viewing a previously generated QR code on their device while offline at a dive shopW the dive center staff scans the QR code using a device with internet accessT the staff's device should successfully navigate to the secure vault URL and display the diver's verified credentials
e2e
ready
happy
G the user has navigated to their certification vaultW they select a certification and request to share itT the system displays a generated QR code and secure link for offline verification
e2e
ready
happy
G the user is viewing a specific certification recordW the page loads successfullyT the user can access controls to revoke existing share links or generate new QR codes
e2e
ready
happy
G the diver is in the Digital Certification Vault and has selected a valid image or PDF of their certificationW they select the certifying agency (e.g., PADI), enter the certification number, and submit the upload formT the system should save the document and display it in the vault categorized under the selected agency with a 'Pending Verification' status
e2e
ready
error
G the diver is on the certification upload screenW they attempt to submit the form while leaving the agency selection or certification number field blankT the system should prevent the upload and display a validation error identifying the missing required fields
e2e
ready
error
G the diver is uploading a certification documentW they select a file format that is not a supported image (JPG, PNG) or PDFT the system should reject the file and display an error message specifying the allowed file types
e2e
ready
edge
G the diver has already uploaded a specific certification (e.g., PADI Open Water) with a specific credential numberW they attempt to upload another document with the exact same agency and credential numberT the system should flag the duplicate entry and ask the diver if they wish to replace the existing document or cancel the upload
e2e
ready
edge
G the diver is viewing the agency selection dropdownW they search for an agency not listed in the default options and select 'Other'T the system should provide a text input field for the diver to manually enter the agency name to ensure all global agencies are supported
e2e
ready
happy
G the diver is in the Certification VaultW they use the upload toolT the certification is added to the vault list and categorized by agency
unit
ready
happy
G a new user opens their vault for the first timeW no certifications have been uploadedT the system displays an empty state message 'Your Certification Vault is empty'
e2e
ready
happy
G the liveaboard owner is viewing the professional credentials dashboard and there are dive masters with uploaded insurance documents associated with their vesselW the owner selects a specific dive master's insurance record and clicks the 'View' buttonT the system should display a high-resolution preview of the insurance document alongside the policy number and expiration date
e2e
ready
happy
G the liveaboard owner is in the credential vault and has selected one or more insurance records for exportW the owner clicks the 'Export Selected' button and chooses PDF formatT the system should generate and download a ZIP file containing the selected insurance documents and a summary manifest
e2e
ready
error
G the liveaboard owner is viewing the list of dive masters associated with the vesselW a dive master has been assigned to the vessel but has not yet uploaded a professional liability documentT the system should display a 'Missing Document' status badge and disable the export/view actions for that specific record
e2e
ready
edge
G the liveaboard owner is reviewing the vault and a dive master's insurance document has been flagged as 'Invalid' or 'Unverified' by the systemW the owner attempts to export the document as part of a compliance batchT the system should include the document but mark it with a clear 'Unverified' watermark or metadata flag in the export manifest
unit
ready
happy
G the liveaboard owner is filtering the credential vaultW the owner applies a filter to show only 'Expired' insurance documentsT the list should update to show only those dive masters whose professional liability insurance is past the recorded expiration date
integration
ready
happy
G the administrator requires a physical or external copy of the current platform performance dataW the user interacts with the Export & Scheduled Reports sectionT the system provides options to download the current data views or schedule automated report delivery
e2e
ready
happy
G a business owner is managing their staffW they view the staff and credentials sectionT they can review the professional liability insurance documents for all dive masters
e2e
ready
happy
G the dive centre owner is viewing a diver's digital log entry on their mobile device after scanning a valid QR code produced by the diverW the owner clicks the 'Verify Log' buttonT the system should apply the dive centre's digital stamp to the log, mark the entry status as 'Verified', and notify the diver of the confirmation
e2e
ready
error
G the dive centre owner scans a QR code that is expired or associated with a different user's accountW the system processes the scanned codeT an error message should indicate that the verification link is invalid or expired and prevent the owner from accessing the verification form
e2e
ready
error
G the dive centre owner is reviewing a log entry for verification where the diver has not filled in mandatory technical fields like 'Max Depth' or 'Bottom Time'W the owner attempts to click the 'Verify Log' buttonT the system should disable the verification action and display a message stating that the log must be fully completed by the diver before it can be officially stamped
e2e
ready
edge
G the dive centre owner is viewing a log entry that has already been verified by another staff member or centerW the log details loadT the 'Verify Log' button should be replaced with a 'Verified' badge and the details of the previous verification (date and center name) to prevent duplicate stamping
e2e
ready
happy
G the dive centre owner is reviewing a log entry for verificationW the owner selects the 'Reject' or 'Request Correction' option and provides a reasonT the log should remain in a 'Pending' state and the diver should receive a notification containing the owner's feedback for correction
e2e
ready
happy
G the diver presents their log to a dive center ownerW the owner scans the QR code in the Verification sectionT the log entry receives a digital stamp of authenticity
integration
ready
happy
G a new draft log has been created but not yet verifiedW the user views the log detailsT the Verification section shows a status indicating it is a 'Draft log'
e2e
ready
happy
G the diver is creating a dive log entry and has selected multiple valid underwater photos for uploadW the diver submits the dive log entryT the log entry should be saved with all selected photos correctly associated and displayed as a gallery within the log details
e2e
ready
happy
G the diver is editing a previously saved dive log entry that already contains attached photosW the diver adds a new photo and saves the changesT the system should append the new photo to the existing collection without removing or overwriting the original photos
unit
ready
edge
G the diver is in the photo upload interface and has selected a photo that is already present in the current log's upload queueW the diver attempts to add the duplicate file againT the system should ignore the duplicate file request or notify the user that the photo is already attached to prevent redundant storage
e2e
ready
error
G the diver is uploading photos to a dive log and the total size of all selected images exceeds the maximum allowed payload for a single log entryW the diver attempts to save the log entryT the system should block the submission and display a validation error indicating that the cumulative size of the photos is too large
e2e
ready
edge
G the diver has selected a photo for upload and the file contains specific metadata (EXIF) such as GPS coordinates or timestampsW the diver saves the log entryT the system should preserve the image quality while ensuring any sensitive metadata is handled according to the platform's privacy settings before public display
e2e
ready
happy
G the user is on the Dive Log Details pageW the system is processing a high-resolution photo uploadT a 'Saving log...' state is shown to indicate the upload progress
e2e
ready
happy
G the diver is creating or editing a digital dive log entryW the diver selects and uploads one or more supported image files from their deviceT the system should display thumbnails of the uploaded photos within the log entry and save them to the diver's record upon submission
e2e
ready
error
G the diver is in the photo upload interface for a dive logW the diver attempts to upload a file that is not a supported image format (e.g., a .zip or .txt file)T the system should reject the file and display a validation error message specifying that only image files are permitted
e2e
ready
error
G the diver is in the photo upload interfaceW the diver attempts to upload an image that exceeds the system's maximum per-file size limitT the system should block the upload and display an error message regarding the maximum file size restriction
e2e
ready
happy
G the diver has already uploaded multiple photos to a dive log entryW the diver clicks the 'Remove' or 'Delete' icon on a specific photo thumbnailT the photo should be removed from the log entry and the thumbnail should disappear from the interface immediately
e2e
ready
edge
G the diver has reached the maximum allowed number of photos for a single dive log entryW the diver attempts to upload an additional photoT the system should disable the upload action and display a message indicating that the photo limit for this entry has been reached
e2e
ready
happy
G the diver is viewing an existing dive log with attached photosW the diver clicks on a photo thumbnailT the system should display a full-screen or expanded view of the photo for better visual inspection
e2e
ready
happy
G the user is viewing a dive log entryW the user selects files and clicks upload in the photo sectionT the underwater photos are displayed in the Photo Gallery & Upload section
e2e
ready
happy
G the diver has successfully completed a booking for a specific dive site and date through the platformW the booking status transitions to 'Confirmed'T the system should automatically create a new dive log entry in 'Draft' status with the site name, date, and dive center pre-populated from the booking data
unit
ready
edge
G the diver has completed a multi-day liveaboard booking consisting of several distinct diving daysW the booking is finalizedT the system should generate one draft log entry for each scheduled day of the trip, using the trip's start and end dates to define the log dates
unit
ready
error
G the system attempts to generate a draft log for a booking but the associated dive site has been deleted from the database since the booking was madeW the background process for log generation runsT the system should still create the draft log using the static site name string from the booking record and flag the 'Site' field as unlinked
integration
ready
edge
G the diver has a booking that is currently in 'Pending' or 'Waitlist' statusW the diver views their digital dive log listT no draft log entry should be visible for that booking until the status changes to 'Confirmed'
e2e
ready
happy
G the user has completed a booking and navigates to the Digital Dive Logs pageW the system processes the booking dataT a draft dive log entry is automatically generated in the Logs List & Draft Generation section
e2e
ready
happy
G the user is fetching their newly generated draft logsW the logs are being retrieved from the databaseT a 'Loading dive logs...' message is displayed
e2e
ready
happy
G the diver is in the Digital Dive Log section and has at least one saved dive log entryW the diver selects the 'Export' option and chooses 'PDF' as the formatT the system should generate and download a PDF document containing a chronological list of all dive logs including site names, dates, dive centers, and technical data
e2e
ready
happy
G the diver is in the Digital Dive Log section and has multiple dive log entriesW the diver selects 'Export' and chooses a standard data format like 'CSV' or 'JSON'T the system should download a machine-readable file containing all raw dive data fields for use in external logging software
e2e
ready
edge
G the diver has no recorded dive logs in their accountW the diver attempts to click the 'Export' buttonT the export button should be disabled and a tooltip should indicate that there are no logs available to export
e2e
ready
happy
G the diver is viewing the dive log list and has applied a specific filter, such as a date range or a specific dive centerW the diver clicks the 'Export Filtered Results' buttonT the generated file should only contain the dive logs that match the active filter criteria rather than the entire history
e2e
ready
edge
G the diver initiates a large export containing hundreds of dive logs with high-resolution photosW the system processes the export requestT the system should generate a PDF that includes optimized thumbnails of the photos and text-based technical data to ensure the file size remains manageable for email sharing
integration
ready
error
G the document generation service encounters an internal error or timeout during the export processW the diver clicks the final 'Download' buttonT the system should display an error message stating that the file could not be generated and suggest the diver try again or export a smaller date range
e2e
ready
happy
G the user is on the main Digital Dive Logs list pageW the user selects the export option in the Export Tools sectionT the system provides a download of the dive logs in PDF or a standard data format
e2e
ready
happy
G the user has no recorded dive logs in their accountW the user visits the dive logs pageT the 'No logs found' message is displayed and export tools are disabled
e2e
ready
happy
G the user is creating or editing a digital dive log entryW the user enters valid positive numeric values for maximum depth, bottom time, starting air pressure, and ending air pressureT the system should accept the inputs and calculate the total air consumption for the dive record
e2e
ready
error
G the user is in the technical metrics section of the dive logW the user attempts to save the log with a negative numeric value in any technical fieldT the system should prevent the save and display a validation error indicating that technical metrics must be positive values
e2e
ready
error
G the user is entering air consumption dataW the user enters an ending air pressure that is higher than the starting air pressureT the system should display a logical warning or error indicating that ending pressure cannot exceed starting pressure
e2e
ready
edge
G the user is entering technical metricsW the user enters a maximum depth or bottom time that exceeds realistic human diving limits (e.g., depth > 332m or time > 1440 mins)T the system should prompt the user to confirm the entry is correct before allowing the save to proceed
e2e
ready
error
G the user is entering technical metrics into a log entryW the user enters non-numeric characters into the depth, time, or air consumption fieldsT the system should strip the non-numeric characters or block the input to ensure only numeric data is stored
e2e
ready
happy
G the user is viewing a specific dive log detail pageW the user enters data into the maximum depth and bottom time fieldsT the Technical Metrics & Notes section saves the performance and gas management data
e2e
ready
error
G the user attempts to save technical metrics but a system failure occursW the save button is clickedT an 'Unable to save log' error message is displayed to the user
e2e
ready
happy
G the liveaboard owner is viewing the trip manifest for a completed excursion where multiple guests have submitted digital dive logs for verificationW the owner selects the 'Select All' checkbox and clicks the 'Bulk Approve' buttonT the system should update the status of all selected logs to 'Verified' and display a success message confirming the total number of approved logs
e2e
ready
error
G the liveaboard owner is in the bulk approval interface where some logs are complete and others are missing mandatory technical data (e.g., bottom time)W the owner attempts to bulk-approve the entire selectionT the system should approve only the valid logs, skip the incomplete ones, and display a report identifying which guests need to provide more information
e2e
ready
edge
G the liveaboard owner is viewing a guest list for a trip that has ended but no guests have actually created or submitted any digital logs yetW the owner looks at the bulk actions menuT the 'Bulk Approve' button should be disabled or hidden, with a message indicating that no logs are available for verification
e2e
ready
error
G the liveaboard owner has initiated a bulk approval for a large group (e.g., 20+ divers) and a database conflict occurs for one specific record during the processW the system processes the batch updateT the system should ensure an atomic transaction where either all valid logs are updated or the user is clearly notified of the specific failure while other successful updates persist
integration
ready
happy
G the liveaboard owner has selected multiple logs for bulk approvalW the owner clicks 'Bulk Approve' and confirms the actionT the system should append the liveaboard center's digital signature/stamp to each log and notify the respective divers that their logs have been verified
e2e
ready
happy
G the liveaboard owner is managing trip equipment and group recordsW the owner accesses the consolidated manifest table for a tripT the system allows for bulk review of group activities and requirements
integration
ready
happy
G the liveaboard trip has no guests or rental data recordedW the owner views the manifestT the 'No rentals' empty state is shown in the Consolidated Manifest Table
e2e
ready
happy
G the dive center owner is on the staff management pageW they submit a new instructor profile with a name, valid certification number, and at least one spoken languageT the system should save the profile and display it within the 'Our Team' section of the public storefront
e2e
ready
error
G the dive center owner is filling out the instructor profile formW they attempt to save the profile without providing a name or a certification numberT the system should block the submission and display a validation error on the missing required fields
e2e
ready
edge
G the dive center owner is adding a profile for an instructor with multiple specialtiesW they select more than five specialized certifications (e.g., Deep Diver, Wreck, Nitrox, Sidemount, Ice)T the storefront profile should display all selected expertise tags clearly to the public user
e2e
ready
happy
G an instructor profile already exists on the storefrontW the dive center owner toggles the 'Active' status to 'Inactive'T the profile should be hidden from the public storefront immediately but remain editable in the management panel
e2e
ready
error
G the dive center owner is uploading a staff photo for the profileW they upload a file that is not an image format (e.g., a PDF or DOCX)T the system should reject the file and display an error message indicating that only image files are permitted
e2e
ready
edge
G the dive center owner is adding an instructor who speaks a rare language not in the default dropdownW they use the 'Add Custom' language option to type in the language nameT the system should accept the custom entry and display it on the instructor's public profile alongside standard languages
e2e
ready
happy
G the dive center owner is managing their teamW they add a new instructor profile with certifications and languagesT the profile appears in the Staff & Credentials frame of the management console
unit
ready
happy
G a diver is viewing a specific dive center storefrontW they scroll to the team sectionT they see professional staff profiles including expertise and photos in the Our Team section
e2e
ready
happy
G the dive center owner is in the 'Storefront Branding' settings and has uploaded a logo and multiple facility photosW they click the 'Save Changes' buttonT the system should persist the branding assets and display a success message confirming the storefront has been updated
e2e
ready
happy
G the dive center owner is configuring the equipment rental listW they add a new gear category with individual items, sizes, and daily rental ratesT the rental list should update to show the new equipment structure and calculate the total inventory count for that category
integration
ready
error
G the dive center owner attempts to upload a facility photo that exceeds the maximum file size limitW they select the file for uploadT the system should block the upload and display a specific error message regarding size restrictions
e2e
ready
error
G the dive center owner is editing the equipment rental list and enters a negative value or zero in the 'Daily Rate' fieldW they attempt to save the equipment itemT the system should highlight the price field and prevent saving until a valid positive numeric value is provided
e2e
ready
edge
G the dive center owner has reached the maximum allowed number of facility photos for their storefront levelW they attempt to upload an additional photoT the upload button should be disabled and a tooltip should explain that the photo limit has been reached
e2e
ready
edge
G the dive center owner removes all previously saved branding (logo) and photos from the management panelW they save the empty stateT the public storefront should display default placeholder branding and a 'No photos available' message rather than broken image links
e2e
ready
happy
G the administrator is on the Admin Settings pageW they modify the application name or default timezone in the Platform Branding & Config sectionT the global branding settings are updated across the platform to maintain a professional online presence
e2e
ready
error
G the system fails to persist the new branding or template configurationW the user clicks the save buttonT the page transitions to the error state and displays a message stating that settings could not be saved
e2e
ready
happy
G the owner is setting up their professional presenceW they upload facility photos and branding assetsT the assets are reflected in the Branding & Photos section of the management console
unit
ready
happy
G a diver visits the dive center's public pageW the page loads successfullyT the Storefront Header displays the shop's branding and contact information
e2e
ready
happy
G the dive center owner is viewing the gear inventory list for their storefrontW they select an available piece of equipment and change its status to 'Under Maintenance'T the system should save the status change and display a visual badge next to the item indicating it is currently being serviced
e2e
ready
happy
G the dive center owner is attempting to mark a bulk category of gear (e.g., all 5mm Wetsuits) as unavailableW they apply the 'unavailable' status to the entire category groupT the system should update every individual item record within that category to the unavailable state simultaneously
integration
ready
error
G the dive center owner is editing an equipment status and enters an 'Unavailable' stateW they attempt to save the change with a blank 'Reason for Unavailability' field where a reason is mandatoryT the system should highlight the required field and prevent the status update until the information is provided
e2e
ready
happy
G the dive center owner has previously marked an item as 'Under Maintenance'W they toggle the status back to 'Available'T the system should immediately restore the item's visibility in the storefront booking flow for new customers
unit
ready
edge
G a specific gear item is currently assigned to a diver who has already checked in and is mid-tripW the owner attempts to mark that specific serialized item as 'Under Maintenance'T the system should allow the status change but display a prompt to confirm if the gear was swapped for the current diver to maintain log accuracy
e2e
ready
happy
G the dive center owner is viewing their equipment list in the inventory dashboardW they toggle an item's status to 'under maintenance' or 'unavailable'T the system updates the equipment status in the Equipment Maintenance & Unavailable Flags frame
e2e
ready
happy
G the inventory data is being retrieved from the serverW the owner opens the inventory management pageT a 'Loading inventory...' message is displayed to the user
e2e
ready
happy
G the dive center owner is viewing their equipment inventory list in the storefront management panelW they toggle the status of a specific gear item to 'unavailable' or 'under maintenance'T the system should immediately update the item's status and hide it from the public-facing booking options for customers
e2e
ready
error
G the dive center owner is attempting to mark a specific equipment type as 'unavailable'W they submit the status change without selecting a reason or duration if required by the formT the system should prevent the update and display a validation error highlighting the missing required fields
e2e
ready
edge
G a piece of equipment is currently associated with an active, confirmed booking for a future dateW the dive center owner marks that specific equipment as 'under maintenance'T the system should update the status but also trigger a warning notification to the owner that existing bookings are affected
integration
ready
happy
G the dive center owner has marked all units of a specific size (e.g., XL BCDs) as 'unavailable'W a diver views the storefront rental moduleT the specific size option should be visually disabled or labeled as 'Out of Stock' to prevent selection
e2e
ready
error
G the dive center owner is updating equipment status and the backend database update failsW they click the save button for the status changeT the UI should revert the toggle to its previous state and show an error message indicating the change was not saved
e2e
ready
happy
G an item has been marked as unavailable by the ownerW a diver views the dive center storefrontT the item is displayed as unavailable or excluded from the active Amenities & Rental List
e2e
ready
edge
G the dive center has no rental equipment currently listedW the diver views the storefront rental sectionT the section displays an appropriate empty state or placeholder
e2e
ready
happy
G the diver is browsing the dive center directory or map viewW the diver selects one or more specific amenities from the filter panel, such as 'camera room' and 'onsite equipment repair'T the list of dive centers should update to display only those storefronts that offer all of the selected amenities
e2e
ready
happy
G the diver has applied multiple amenity filtersW the diver clicks the 'Clear' button next to a specific amenity tag or the 'Reset All' buttonT the filter should be removed and the dive center list should refresh to include centers that were previously excluded by that specific amenity requirement
e2e
ready
edge
G the diver selects a combination of highly specific amenities (e.g., 'Trimix Blending' and 'Indoor Pool') that no registered dive center currently providesW the diver applies the filter combinationT the UI should display a message stating that no dive centers match the selected criteria and suggest broadening the search or clearing filters
e2e
ready
happy
G the diver is viewing a dive center storefront after filtering by 'camera room'W the page loads the storefront detailsT the 'camera room' amenity should be clearly highlighted or listed within the amenities section of the storefront to confirm why it matched the search
e2e
ready
happy
G a diver is browsing the dive center directoryW they select amenities like 'camera room' in the filtersT the Center List updates to show only shops matching those specific technical needs
e2e
ready
edge
G a diver applies a filter that matches no available dive centersW the search is processedT the 'No centers found' empty state message is displayed
e2e
ready
happy
G the user is on the dive centers list page with several centers availableW the user selects specific amenities like 'onsite equipment repair' in the Filters sectionT the Center List should update to only display dive centers that offer those specific facilities
e2e
ready
edge
G the user has applied highly specific amenity filtersW no dive centers in the database match the selected criteriaT the Center List frame displays a message indicating that no centers were found matching those filters
e2e
ready
happy
G the diver is viewing a specific dive center storefrontW the storefront page loadsT the system should display the dive center's physical address, phone number, email address, and an embedded map showing their exact geographic location
e2e
ready
edge
G the dive center has not provided an optional contact field, such as a secondary phone number or specific emailW the diver views the contact details sectionT the system should gracefully hide the empty fields or labels rather than displaying 'null' or empty placeholders
e2e
ready
happy
G the diver is viewing the contact details on the storefrontW the diver clicks on the displayed phone number or email addressT the system should trigger the device's default communication handler, such as the dialer for phones or the mail client for email
e2e
ready
error
G the dive center's geographic coordinates are missing or invalid in the databaseW the diver navigates to the storefront pageT the system should display the text-based address but replace the embedded map with a message stating that the map location is currently unavailable
e2e
ready
happy
G the diver is viewing the embedded map on the storefrontW the diver clicks the 'Get Directions' link or the map markerT the system should open the location in an external mapping application with the dive center's coordinates pre-filled
e2e
ready
happy
G a diver needs to find the shop's physical locationW they view the storefront headerT the exact geographic location is displayed on an interactive map alongside local contact details
e2e
ready
error
G the storefront data cannot be loaded due to a network errorW a diver attempts to access the dive center detailsT an 'Unable to load storefront' error message is displayed
e2e
ready
happy
G the liveaboard owner is in the storefront management panel and views the 'Associated Centers' sectionW they search for a registered land-based dive center by name and select 'Link'T the land-based dive center should be added to the liveaboard's profile and appear as a linked entity on the public storefront
e2e
ready
error
G the liveaboard owner attempts to link a dive center that is already associated with their liveaboardW they attempt to save the duplicate associationT the system should prevent the action and display a message indicating that this center is already linked
e2e
ready
happy
G the liveaboard owner is viewing their list of linked land-based dive centersW they click the 'Unlink' button next to a specific dive centerT the association should be removed from the management panel and the center should no longer appear on the liveaboard's storefront
e2e
ready
edge
G a liveaboard has linked a land-based dive center that subsequently deactivates its account or is removed from the platformW a customer views the liveaboard storefrontT the system should automatically hide the link to the inactive dive center to prevent broken redirects
e2e
ready
error
G the liveaboard owner is searching for a dive center to linkW they enter a search term that returns no registered dive centersT the system should display a message that no matching dive centers were found and provide an option to invite the center to the platform
e2e
ready
happy
G the liveaboard owner is on the storefront management pageW they configure their business ecosystem and preferencesT the associated business details are saved within the Notifications & Booking Preferences section
e2e
ready
error
G the owner attempts to link businesses but the server is unreachableW the management page fails to loadT a 'Management error' message is displayed to the owner
e2e
ready
happy
G the dive center owner is on the 'Site Popularity' dashboard and the platform has recorded bucket list additions for local sitesW the owner views the site ranking listT the system should display a list of dive sites within the center's operating radius, ranked by the total number of times each site appears in users' bucket lists
e2e
ready
edge
G the dive center owner is viewing the popularity ranking and no users have yet added any local sites to their bucket listsW the dashboard loads the popularity dataT the system should display a zero-state message indicating that no popularity data is available yet for the local area
e2e
ready
edge
G the dive center owner is viewing the popularity dashboard and several sites have an identical number of bucket list additionsW the owner sorts the list by 'Most Popular'T the system should display those sites with tied counts in alphabetical order while maintaining their rank position
e2e
ready
error
G the dive center owner is viewing the site popularity list and the analytics service fails to retrieve the aggregate countsW the owner refreshes the popularity reportT the system should display a specific error message stating that popularity metrics are temporarily unavailable and provide a retry button
e2e
ready
happy
G a dive center owner is reviewing their storefront performanceW the owner views the Branding & Photos section where site popularity is aggregatedT the owner sees a list of local dive sites ranked by how often they appear in user bucket lists
e2e
ready
error
G the storefront management data fails to load due to a server errorW the owner refreshes the pageT the page displays a 'Management error' state
e2e
ready
happy
G the user has several dive sites saved to their favorites and is viewing the interactive dive map with all global sites visibleW the user toggles the 'Show Favorites Only' filterT the map should hide all standard dive site markers and display only the pins corresponding to the user's favorited sites
e2e
ready
edge
G the user has zero dive sites saved to their favorites and is viewing the interactive mapW the user toggles the 'Show Favorites Only' filterT the map should display no dive site markers and show a notification or empty state message indicating that no favorites are available to display
e2e
ready
happy
G the 'Show Favorites Only' filter is currently active and the user is viewing their favorited pinsW the user clicks the 'Unfavorite' icon on one of the visible pinsT the site should be removed from the user's favorites and its marker should immediately disappear from the map view while the filter remains active
e2e
ready
happy
G the user has 'Show Favorites Only' active and also has an existing depth filter of '20 meters' appliedW the map updates to show resultsT the map should only display markers that are both in the user's favorites and meet the 20-meter depth requirement
e2e
ready
happy
G the user is viewing the map with the favorites filter activeW the user toggles the 'Show Favorites Only' filter offT the map should restore all standard dive site markers relative to the current zoom level and other active filters
e2e
ready
happy
G the user is on the Map page with multiple sites visibleW the user toggles the 'Favorites Only' filter in the Filters & Search PanelT the Map Canvas updates to only show markers for sites that are in the user's bucket list
e2e
ready
happy
G the user has not favorited any dive sitesW the user applies the favorites filter on the mapT the Map Canvas displays a 'No sites found' empty state message
e2e
ready
happy
G the diver is logged in and is viewing the interactive dive map with several sites marked as favoritesW the diver activates the 'Favorites' filter toggleT the map interface should persist only those markers explicitly saved to the diver's wishlist and provide a visual confirmation that the map is now in a personalized view
e2e
ready
edge
G the diver has the 'Favorites' filter active and is viewing their personal sitesW the diver zooms or pans the map to a geographic region where they have no favorited sitesT the map should display an empty viewport with a prompt or button allowing the diver to 'Show All Sites' or 'Clear Filter' to find dive sites in that area
e2e
ready
happy
G the diver has the 'Favorites' filter active and clicks on a favorited dive site marker to view its summaryW the diver clicks the 'Unfavorite' button within the site summary popupT the site should be removed from the diver's bucket list and the marker should immediately disappear from the map view without requiring a manual refresh
e2e
ready
happy
G the user is viewing their Bucket List pageW the user scrolls to the Map of Favorites sectionT the map displays geographic markers for all saved dive sites to help with route planning
e2e
ready
happy
G the user has no items in their personal bucket listW the user views the Bucket List pageT the Map of Favorites displays an 'empty' state indicating the bucket list is empty
e2e
ready
happy
G a diver has a liveaboard trip in their wishlist and the trip is currently at high capacityW the available spots for that trip drop to a system-defined 'low occupancy' threshold (e.g., 2 spots left)T the system should automatically send a low-occupancy alert to the diver via their preferred notification channel
integration
ready
edge
G a diver has a liveaboard trip in their wishlist that is already below the low-occupancy thresholdW additional spots are booked for that same tripT the system should not send duplicate low-occupancy alerts to the diver
integration
ready
edge
G a diver has a liveaboard trip in their wishlist that is currently sold outW a previous booking is cancelled and the trip occupancy returns to the 'low-occupancy' thresholdT the system should trigger a new low-occupancy alert to inform the diver that spots have become available again
unit
ready
error
G a diver has a liveaboard trip in their wishlist and the occupancy drops below the thresholdW the diver has disabled 'Trip Alerts' or 'Marketing Notifications' in their profile settingsT the system should suppress the alert and not send a notification to that specific diver
integration
ready
happy
G a diver receives a low-occupancy alert for a trip in their wishlistW they click the call-to-action within the notificationT the system should direct the diver specifically to the booking engine for that exact liveaboard trip and date
e2e
ready
happy
G the user has liveaboard trips in their wishlistW the user navigates to the Bucket List pageT the Alerts & Subscriptions section displays a low-occupancy notification for trips with limited cabin availability
e2e
ready
error
G the user is viewing their Bucket List and a network error occursW the system attempts to fetch alert dataT the page displays an 'Unable to load favorites' error message
e2e
ready
happy
G the user is viewing a dive site summary popup on the interactive map and the site is not currently in their bucket listW the user clicks the 'Add to Bucket List' iconT the icon should change to a filled state and the dive site should be saved to the user's personal wishlist
e2e
ready
happy
G the user is viewing a dive site summary popup on the map for a site that is already in their bucket listW the user clicks the 'Remove from Bucket List' iconT the icon should revert to an outlined state and the dive site should be removed from the user's personal wishlist
e2e
ready
error
G the user attempts to add a dive site to their bucket list while the backend service is unresponsiveW the user clicks the 'Add to Bucket List' iconT the icon should not change state and a message should inform the user that the site could not be saved at this time
e2e
ready
edge
G the user is viewing a dive site on the map that has just been deactivated or removed from the database by an adminW the user clicks the 'Add to Bucket List' iconT the system should display a notification that this dive site is no longer available and refresh the map to remove the stale marker
e2e
ready
happy
G the user is viewing a specific dive site on the interactive mapW the user opens the Site Summary Popup and clicks the save buttonT the dive site is added to the user's personal bucket list
e2e
ready
happy
G the map is initializing and fetching site dataW the user waits for the discovery view to loadT the Map Canvas shows a 'Rendering map and site markers' loading state
e2e
ready
happy
G the diver is viewing the details of a liveaboard trip that is currently in their 'Bucket List' but does not have alerts activeW the diver toggles the 'Price Drop Alert' switch to the active positionT the system should save the subscription and display a confirmation that the diver will be notified of any price reductions for that specific trip
e2e
ready
happy
G the diver has an active price drop alert for a liveaboard trip and the provider reduces the trip's price in the booking engineW the system detects the price changeT an automated notification should be sent to the diver containing the old price, the new discounted price, and a direct link to the booking page
e2e
ready
error
G the diver is attempting to enable a price drop alert but has not verified their primary email address in their profile settingsW the diver clicks to enable the alertT the system should prompt the diver to verify their contact information before the subscription can be activated
e2e
ready
edge
G the diver has an active price drop alert for a trip that is subsequently removed from the platform or cancelled by the providerW the trip status changes to 'Cancelled' or 'Removed'T the system should automatically deactivate the alert and notify the diver that the trip is no longer available for booking
unit
ready
edge
G the diver has an active price drop alert for a specific liveaboard tripW the diver removes that trip from their 'Bucket List' or favoritesT the system should automatically unsubscribe the diver from price drop alerts for that trip to maintain data privacy and relevance
unit
ready
edge
G the liveaboard provider increases the price of a trip for which the diver has an active alertW the price update is processedT the system should update the baseline price for the alert but should not trigger a notification to the diver
integration
ready
happy
G the user has favorited liveaboard trips in their Bucket ListW the user selects the option to subscribe to price drops in the Alerts sectionT the system confirms the subscription and will notify the user of price decreases
e2e
ready
happy
G the user is loading their Bucket List subscriptionsW the page is requestedT the Alerts & Subscriptions section shows a 'Loading your bucket list' indicator
e2e
ready
happy
G the liveaboard business owner is on the analytics dashboard and their trips have been added to user wishlistsW they view the 'Trip Interest' or 'Favorites' sectionT the system should display the aggregate number of unique users who have saved each of their liveaboard trips to a bucket list
e2e
ready
edge
G the liveaboard business owner has recently published a new trip that has not yet been favorited by any usersW they view the favorited count for that specific tripT the system should display a count of '0' rather than a blank space or an error message
e2e
ready
error
G the liveaboard business owner is viewing the total favorites count and the data retrieval service encounters a failureW the dashboard attempts to load the metricsT the system should display a 'Data temporarily unavailable' message with a retry option within the specific metrics container
e2e
ready
happy
G the liveaboard business owner has multiple active and archived tripsW they filter the view by trip statusT the system should allow the owner to see favorite totals for both current active listings and historical archived trips to compare past interest
e2e
ready
happy
G a business owner is viewing their storefront management dashboardW the owner checks the Notifications & Booking Preferences sectionT the system displays the total number of users who have favorited their liveaboard trips to gauge market interest
e2e
ready
happy
G a new business owner has just created a storefrontW the owner views the management consoleT the favorite count displays as zero within the Notifications section
e2e
ready
happy
G the dive centre owner is viewing the trip management calendarW the owner selects a specific date and enters a valid positive integer for capacity and a valid currency amount for pricingT the system should save the settings for that date and update the trip listing to reflect the new capacity and seasonal rate
e2e
ready
error
G the dive centre owner is updating the capacity for a future trip dateW the owner attempts to set a capacity limit that is lower than the number of divers already booked for that dateT the system should block the update and display an error message stating that capacity cannot be less than current confirmed bookings
e2e
ready
error
G the dive centre owner is configuring trip detailsW the owner attempts to save a negative value for pricing or a non-integer value for capacityT the system should prevent the save and highlight the invalid fields with a validation error
unit
ready
happy
G the dive centre owner has selected a date range (e.g., a holiday week)W the owner applies a bulk update to the pricing and capacity for all dates within that rangeT the system should update all selected dates simultaneously while skipping any individual dates that would result in a capacity conflict with existing bookings
e2e
ready
edge
G the dive centre owner updates the price for a trip date that already has pending, unpaid reservationsW the owner confirms the price changeT the system should apply the new price to all future booking attempts while maintaining the original quoted price for sessions already in the checkout flow
integration
ready
edge
G the dive centre owner is setting the capacity for a specific tripW the owner sets the capacity to zeroT the system should mark the trip as 'Sold Out' or 'Unavailable' on the public storefront for that specific date
unit
ready
happy
G the user is on the pricing page and pricing data has been successfully fetchedW the user views the Plan Comparison sectionT the system displays the current subscription plans with their respective seasonal rates and capacity-based tiering
e2e
ready
error
G the pricing service is currently unavailable or returns an error responseW the page is accessed by any userT the error UI state is displayed with a message stating 'Pricing unavailable' and a retry option
e2e
ready
happy
G the dive center owner is managing their equipment and trip inventoryW the owner updates the pricing models and stock counts in the Inventory Management pageT the system saves the new daily or per-trip rates and updates available capacity for bookings
e2e
ready
happy
G the owner is viewing the inventory list to adjust capacitiesW the page is fetching current stock and pricing dataT the UI displays a 'Loading inventory...' state
e2e
ready
happy
G the diver is on the booking engine page with the full list of available trips displayedW the diver selects a specific date range, a geographic location, and their current certification level (e.g., 'Advanced Open Water')T the trip list should refresh to display only excursions that occur within those dates, are located in the chosen region, and have a minimum certification requirement that the diver meets or exceeds
e2e
ready
edge
G the diver has applied a combination of filters (date, location, and certification)W the diver selects a combination of criteria for which no trips are currently scheduledT the system should display a message indicating no trips match the selected filters and provide a button to reset all filters to default
e2e
ready
error
G the diver is interacting with the date filterW the diver attempts to select a 'To' date that is chronologically before the 'From' dateT the system should either automatically adjust the 'To' date to match the 'From' date or display a validation message and prevent the filter from being applied
e2e
ready
happy
G the diver has a specific certification level selected in the filterW the diver changes only the certification level filter to a more restrictive one (e.g., from 'Open Water' to 'Rescue Diver')T the list should immediately update to hide trips that only require 'Open Water' and show only those requiring 'Rescue Diver' or lower, while maintaining any existing date or location constraints
e2e
ready
happy
G the diver is using the location filter which includes a 'Radius' or 'Region' settingW the diver selects a broad region (e.g., 'Southeast Asia') and then narrows it to a specific city (e.g., 'Phuket')T the system should dynamically update the trip results to reflect the more specific geographic boundary without losing the other active filter states
e2e
ready
happy
G the user is on the Dive Trips List pageW the user enters a location, date, and certification level into the search fieldsT the Trips List section displays only the excursions that match all the specified criteria
e2e
ready
happy
G the user has applied filters for a specific date and locationW no dive trips match the selected criteriaT the page displays a 'No trips found' message in the trips list area
e2e
ready
happy
G the diver completes a successful payment for a dive trip or liveaboard excursionW the transaction is finalized by the payment gatewayT the system should display an on-screen confirmation and send an email containing the Booking ID, a chronological itinerary of dive sites, and a personalized checklist of required gear
e2e
ready
happy
G the diver has added specific rental equipment (e.g., BCD, fins) to their bookingW the booking confirmation is generatedT the gear checklist should distinguish between 'Items Reserved' (rentals) and 'Items to Bring' (personal gear required but not rented)
unit
ready
edge
G the diver completes a booking for a trip where the itinerary is marked as 'Subject to Weather' or 'Flexible' by the dive centerW the confirmation is receivedT the itinerary section should include a disclaimer stating that specific dive sites are tentative and subject to change based on conditions
integration
ready
error
G the payment is successful but a system error prevents the automated email from being sentW the diver views their 'Upcoming Bookings' section in their profileT the system should provide a 'Download Confirmation & Itinerary' button that generates the same detailed PDF document on demand
e2e
ready
error
G the diver's profile is missing a valid primary email address at the time of bookingW the booking is confirmedT the system should prompt the user to provide an email address on the confirmation screen to ensure the itinerary and gear checklist can be delivered
e2e
ready
happy
G a diver has successfully completed the checkout processW the user views their specific booking detailsT the page displays a detailed itinerary and a gear checklist to help them prepare
e2e
ready
error
G the user attempts to view a booking that does not exist in the systemW the page loads the booking IDT a 'Booking not found' message is displayed in the main content area
e2e
ready
happy
G the diver is in the liveaboard booking flow and the vessel has multiple deck levels and cabin categories with available spotsW the diver selects a specific deck and a cabin within that levelT the system should highlight the selected cabin on the deck plan, update the booking summary with the cabin number, and adjust the total price based on that cabin's specific rate
e2e
ready
error
G the diver is viewing the deck plan and a specific cabin has already reached its maximum occupancy for the selected trip datesW the diver attempts to select the occupied cabinT the system should render the cabin as visually disabled/greyed out and prevent selection, displaying a 'Sold Out' or 'Full' tooltip
e2e
ready
error
G the diver is booking for a group of three people and selects a cabin that is strictly configured as a 'Twin Share' (2-person max)W the diver attempts to assign all three guests to that single cabinT the system should display a validation error stating the selected cabin exceeds capacity for the number of guests and prompt the diver to select an additional or larger cabin
e2e
ready
edge
G the diver has selected a specific cabin and remains on the selection page for an extended periodW another user completes a booking for that same cabin before the first diver submits their selectionT the system should refresh the availability state upon the first diver's attempt to proceed, deselect the cabin, and display a message that the cabin is no longer available
e2e
ready
happy
G the diver is viewing the deck plan for a vessel that offers different amenities per deck (e.g., Upper Deck with balconies vs Lower Deck with portholes)W the diver toggles between different deck levelsT the system should update the visual map to show the layout of the selected deck and display a summary of the features and price range specific to that level
e2e
ready
happy
G the user is viewing a specific liveaboard trip's detailsW the user interacts with the Deck Plan & Cabin SelectorT they can select a specific cabin or deck level, which updates the Payment & Booking Summary section with the corresponding price
e2e
ready
happy
G the user is selecting a cabin for a liveaboard bookingW the trip data is being retrieved from the serverT a 'Loading trip details...' indicator is displayed to the user
e2e
ready
happy
G the liveaboard owner is configuring a payment schedule for a trip departing in 90 daysW they set a deposit amount of 20% due at booking and a final balance due 30 days before departureT the system should save the schedule and automatically calculate the specific calendar deadline for the final payment based on the trip's start date
unit
ready
error
G the liveaboard owner is setting a final balance deadlineW they attempt to set the balance due date to a time after the trip's start dateT the system should prevent the save and display a validation error stating that the final payment must be scheduled for a date prior to or equal to the departure date
e2e
ready
error
G the liveaboard owner is configuring the deposit and final balance percentagesW they enter values where the cumulative total of the payment milestones does not equal 100% of the trip costT the system should display a calculation warning and require the owner to adjust the percentages to reach exactly 100% before saving
e2e
ready
edge
G a payment schedule is configured for a trip that is departing in 5 daysW the liveaboard owner attempts to apply a schedule that requires a final balance 30 days before departureT the system should automatically set the entire trip cost as due immediately at the time of booking
unit
ready
happy
G the liveaboard owner is defining the payment milestonesW they add more than two payment stages (e.g., Deposit, Mid-term, and Final)T the system should support the multi-stage schedule and allow the owner to define distinct percentage amounts and day-offsets for each stage
unit
ready
happy
G the business owner is managing their storefront settingsW the owner accesses the Notifications & Booking Preferences sectionT they can configure automated payment schedules for deposits and final balances
unit
ready
error
G the business owner is setting up payment schedulesW a system error occurs while saving the booking preferencesT a management error message is displayed and the settings are not updated
e2e
ready
happy
G the liveaboard business owner is in the trip management dashboard and selects a specific upcoming trip with confirmed bookingsW the owner clicks the 'View Manifest' buttonT the system should display a comprehensive list of all booked divers including their full names, cabin assignments, and emergency contact details
e2e
ready
edge
G the liveaboard business owner is viewing the manifest for a trip where some divers have not yet completed their required profile informationW the manifest table loadsT the system should display the diver's name but highlight missing data fields (e.g., 'Insurance Number Missing') in red to indicate incomplete logistics
e2e
ready
edge
G the liveaboard business owner navigates to the manifest of a newly created trip that has zero confirmed bookingsW the owner attempts to view the guest listT the system should display a message stating 'No divers have booked this trip yet' with an option to return to the dashboard
e2e
ready
happy
G the liveaboard business owner is viewing a manifest that contains divers with specific dietary requirements or medical alerts noted in their profilesW the manifest is generatedT the system should display a 'Special Requirements' column with visible badges for 'Medical' or 'Dietary' that can be expanded to show details
e2e
ready
error
G the liveaboard business owner attempts to access a manifest for a trip ID that does not exist or has been deletedW the owner requests the manifest via a direct link or dashboard actionT the system should display a 'Trip Not Found' error message and prevent the rendering of any guest data
e2e
ready
edge
G the liveaboard business owner is viewing the manifest for a trip that includes group bookingsW the manifest list is displayedT the system should visually group divers belonging to the same booking reference while still listing individual details for each guest
e2e
ready
happy
G the business owner or crew needs to prepare equipment for an upcoming tripW the user navigates to the Consolidated Equipment Manifest page for a specific date rangeT the Consolidated Manifest Table displays an aggregated list of all rentals and passenger requirements
e2e
ready
happy
G the manifest page is accessed for a trip with no current bookingsW the manifest filters are appliedT the UI displays an empty state indicating 'No rentals' found for the selected period
e2e
ready
happy
G the dive center owner is in the equipment configuration settings for a specific gear itemW they select the 'Daily' pricing model and enter a valid numeric rateT the system should save the setting and calculate the rental cost in the booking flow by multiplying the daily rate by the number of days in the trip
e2e
ready
happy
G the dive center owner is in the equipment configuration settings for a specific gear itemW they select the 'Per-Trip' pricing model and enter a flat numeric feeT the system should save the setting and apply the single flat fee to the booking total regardless of the trip's duration
e2e
ready
error
G the dive center owner is configuring a pricing modelW they attempt to save the configuration without selecting either 'Daily' or 'Per-Trip'T the system should prevent the save and display a validation error indicating that a pricing model selection is mandatory
e2e
ready
edge
G the dive center owner is updating the pricing model for an item that is currently included in pending, unpaid bookingsW they change the model from 'Daily' to 'Per-Trip' and confirm the updateT the system should apply the new pricing model only to new bookings while maintaining the original quoted price for existing pending reservations
integration
ready
happy
G the user is viewing the detailed feature breakdownW the user scrolls to the Feature Matrix sectionT the system displays a comparison of billing models including daily versus per-trip rental pricing capabilities for each plan level
e2e
ready
happy
G the owner is configuring pricing for rental itemsW they access the Pricing Model Configuration sectionT they can toggle between daily and per-trip pricing models for each equipment category
unit
ready
happy
G the owner saves a new pricing model configurationW the system is processing the updateT the UI displays a loading state with the message 'Loading inventory...'
e2e
ready
happy
G the dive centre owner is viewing the manifest section for a specific date range containing multiple dive trips with equipment rentalsW they select the 'Consolidated View' optionT the system should display a cumulative list of all required gear types, sizes, and total quantities needed across all trips in that period
e2e
ready
error
G the dive centre owner is viewing the consolidated manifest and the total quantity of a specific gear size requested exceeds the available inventoryW the manifest list rendersT the system should highlight the specific gear item in red and display the deficit amount (e.g., 'Shortage: 3 units')
e2e
ready
edge
G the dive centre owner is viewing the consolidated manifest for a date range where no equipment rentals have been bookedW the owner applies the date filterT the system should display a message stating 'No equipment rentals scheduled for this period' instead of an empty table
e2e
ready
happy
G the dive centre owner is viewing the consolidated manifest for a period where gear is shared between a morning and afternoon tripW the manifest calculates totalsT the system should display the 'Peak Demand' (the maximum units needed at any single time) to ensure staff know the physical count required on-site
e2e
ready
edge
G the dive centre owner is viewing the manifest for a period where some gear items have not had sizes assigned by the divers yetW the manifest is generatedT the system should group these items under a 'Size Pending' category for that gear type to alert staff of incomplete data
e2e
ready
happy
G the dive centre owner is preparing for upcoming tripsW they view the Consolidated Manifest TableT they see aggregated equipment requirements and can identify total gear counts needed across all bookings
e2e
ready
happy
G there are no equipment rentals booked for the selected date rangeW the owner filters the manifestT the Consolidated Manifest Table displays an empty state with the message 'No rentals'
e2e
ready
happy
G the user is on the equipment preferences section of their profile and the fields for BCD, wetsuit, and fin sizes are currently emptyW the user enters valid size values into all available gear fields and clicks the save buttonT the system should persist the data to the user's profile and display a success message confirming the preferences have been updated
e2e
ready
happy
G the user has existing gear sizes saved in their profileW the user modifies the BCD size value and clicks the save buttonT the system should overwrite the previous value with the new entry and maintain the existing values for the unmodified fields
e2e
ready
happy
G the user is editing their equipment sizesW the user clears all text from the size fields and clicks the save buttonT the system should allow the empty values to be saved, effectively removing the preferences from the profile for future bookings
e2e
ready
error
G the user is entering size information for a specific gear typeW the user attempts to save a value that exceeds the maximum character limit defined for the size fieldT the system should prevent the save and display a validation error message indicating the character limit for that field
e2e
ready
edge
G the user has modified several size fields on the profile pageW the user attempts to navigate away from the profile page without clicking the save buttonT the system should display a confirmation prompt warning the user that they have unsaved changes
e2e
ready
happy
G the user is viewing their profile to manage diving preferencesW the profile page loads successfullyT the Diving Stats & Quick Links section should display the user's diving history and links to saved equipment sizes
e2e
ready
happy
G the user has not yet entered any diving or size informationW the user views their profileT the Profile Summary section displays an 'incomplete' state prompting the user to add details
e2e
ready
happy
G the diver is on the 'Equipment Preferences' section of their profile and enters valid sizes for BCD (e.g., 'Medium'), Wetsuit (e.g., 'Large'), and Fins (e.g., '10-12')W the diver saves the profile updatesT the system should persist these values and display a success confirmation message
e2e
ready
happy
G the diver has previously saved equipment sizes in their profile and is now in the Equipment Rental module of a new bookingW the diver reaches the gear selection stepT the rental form fields for BCD, Wetsuit, and Fin sizes should be automatically populated with the diver's saved profile values
e2e
ready
error
G the diver is editing their equipment sizes and enters a value exceeding the character limit or containing restricted special charactersW the diver attempts to save the profileT the system should prevent the save and display a validation error identifying the invalid input field
e2e
ready
edge
G the diver has existing saved sizes but decides to clear them to leave the profile blankW the diver deletes the values and saves the profileT the system should allow the update and the booking rental forms should return to a blank/selectable state without pre-filled data
integration
ready
edge
G the diver has saved sizes in their profile, but the specific dive center being booked does not offer a matching size in their inventoryW the diver opens the rental module during bookingT the form should still pre-fill the diver's preference but display a warning or highlight if the dive center's inventory cannot satisfy the specific size
e2e
ready
happy
G the user is viewing a specific booking to check their gearW the user views the Itinerary & Gear Checklist sectionT the system displays the pre-filled equipment sizes saved in the user profile
e2e
ready
happy
G the diver is in the equipment rental step of the booking flow and selects a gear type such as 'BCD'W the diver chooses a size from the available options and proceeds to the next stepT the system should link the specific gear type and size to the booking and update the price summary to include the rental fee
e2e
ready
error
G the diver is selecting gear for a bookingW the diver attempts to proceed without selecting a required size for an added gear itemT the system should prevent navigation and display a validation error message indicating that a size must be selected
e2e
ready
happy
G the diver is selecting equipment for a multi-day trip where the dive center uses daily pricingW the diver adds a rental item to their selectionT the system should display the calculated total based on the item's daily rate multiplied by the number of trip days
e2e
ready
happy
G the diver is booking a trip for multiple participantsW the diver navigates to the rental moduleT the system should provide distinct gear selection inputs for each participant included in the booking
e2e
ready
edge
G the diver is selecting gear during the booking flowW the diver selects a gear type and size that has reached its maximum inventory capacity for the trip dateT the system should disable that specific size option and display an 'Out of Stock' or 'Unavailable' label
e2e
ready
happy
G the diver has selected several gear items and then decides to uncheck a gear categoryW the diver removes the gear type from their selectionT the system should remove the associated rental fees from the total price and clear any previously selected sizes for that item
e2e
ready
happy
G the user is on the booking flow page and the system is fetching available gearW the equipment rental selection section is being preparedT the user should see a loading state with the message 'Processing your booking...'
e2e
ready
happy
G the user is in the multi-step booking processW the user navigates to the Equipment Rental Selection sectionT they can select specific gear sizes and equipment types to be included in their booking summary
e2e
ready
happy
G the liveaboard owner is in the inventory management panel for a specific equipment categoryW the owner sets a total stock quantity for a specific size and saves the changesT the system should persist the inventory level and use this as the hard limit for concurrent bookings on any single trip date
integration
ready
error
G the liveaboard owner is updating inventory levelsW the owner attempts to save a stock quantity that is less than the number of units already reserved for an upcoming confirmed tripT the system should display a validation error stating that inventory cannot be reduced below the current reservation count for active bookings
e2e
ready
edge
G the liveaboard vessel has a total capacity of 20 diversW the owner attempts to set the inventory level for a single gear type (e.g., Regulators) to a value significantly higher than the vessel capacityT the system should allow the value but provide a warning notification that the gear inventory exceeds the maximum passenger occupancy
unit
ready
edge
G a specific gear size has an inventory level of 1 remaining for a specific trip dateW two different divers simultaneously attempt to add that specific size to their booking checkoutT the system should grant the item to the first diver to complete checkout and notify the second diver that the item is no longer available before payment is processed
unit
ready
error
G the liveaboard owner is defining inventory for a new gear categoryW the owner enters a negative number or a non-integer value into the stock quantity fieldT the system should block the submission and display a validation error requiring a positive whole number
e2e
ready
happy
G the business owner is on the Inventory Management pageW they access the Inventory List & Controls sectionT they can set stock counts and toggle maintenance states to prevent overbooking of damaged or unavailable gear
e2e
ready
error
G the inventory data fails to retrieve from the serverW the owner attempts to load the inventory pageT an error state is displayed stating 'Unable to load inventory'
e2e
ready
AC-001
G the user has chosen a target directory for the projectW the agent runs `npx create-next-app@latest <target-dir> --typescript --tailwind --app --no-eslint --no-src-dir --use-pnpm`T the target directory contains a runnable Next.js 16 + TypeScript strict + Tailwind v4 + App Router project that boots cleanly with `pnpm dev`
unit
draft
happy
G a new user visits the application for the first timeW the landing page content is being fetched from the marketing templateT the user should see a 'Loading landing content' state to indicate the project foundation is initializing
e2e
ready
happy
G the vibemap-starter template has been successfully scaffoldedW the user navigates to the home pageT the Key Features Grid and Social Proof sections should be visible to confirm the base layout is functional
e2e
ready
AC-002
G the project has been scaffolded from create-next-appW the developer applies the auth-supabase overlayT lib/supabase/client.ts and lib/supabase/server.ts both export createClient and compile cleanly
unit
draft
AC-003
G the auth-supabase overlay is appliedW the developer navigates to /auth/login or /auth/signupT a working email/password form is rendered that can authenticate users against Supabase Auth
e2e
draft
AC-004
G the auth-supabase overlay is applied and a user clicks a magic-link or OAuth redirectW Supabase redirects to /auth/callback?code=<code>T app/auth/callback/route.ts exchanges the code for a session and redirects the user to the protected area
e2e
draft
AC-005
G the auth-supabase overlay is applied and middleware.ts is present in the project rootW any request arrives with an expired Supabase access tokenT the middleware refreshes the session before the route handler runs, preventing stale-session errors
integration
draft
happy
G the user is on the login page and submits their credentialsW the Supabase authentication service is processing the requestT the UI should display 'Authenticating...' to indicate the infrastructure is handling the login
e2e
ready
error
G the user attempts to sign up with invalid informationW the authentication infrastructure returns a failureT the Registration Form should display an 'Unable to register' error state
e2e
ready
happy
G the user is logged in and views their profileW the system retrieves account information from the Supabase auth providerT the Profile Summary and account email in the Account Information section should be populated
e2e
ready
AC-006
G STRIPE_SECRET_KEY is present in the environmentW the developer imports getStripe() from lib/stripe/client.tsT a Stripe SDK instance is returned and can make authenticated API calls
integration
draft
AC-007
G the payments-stripe overlay is applied and the user is authenticatedW the client POSTs { priceId } to /api/stripe/checkoutT the route creates a Stripe Checkout Session and returns { url } pointing to the Stripe-hosted checkout page
e2e
draft
AC-008
G STRIPE_WEBHOOK_SECRET is configuredW Stripe sends a POST to /api/stripe/webhookT the route verifies the stripe-signature header using stripe.webhooks.constructEvent() and returns 400 on failure, 200 on success
integration
draft
AC-009
G the user has an existing Stripe customer ID stored in the databaseW the client POSTs to /api/stripe/portalT a Stripe Billing Portal session is created and { url } is returned so the user can manage their subscription
e2e
draft
happy
G the user navigates to the billing management pageW the Stripe subscription infrastructure is polled for plan detailsT the Current Plan & Usage section should display 'Loading billing info...' while data is retrieved
e2e
ready
happy
G a user has not yet subscribed to any planW the user views the billing dashboardT the Current Plan & Usage section should display 'No active plan' to indicate the empty subscription state
e2e
ready
error
G the user is viewing the pricing tableW the system fails to communicate with the Stripe APIT the Plan Comparison section should display 'Pricing unavailable' to indicate a communication error
e2e
ready
happy
G the user is on the pricing page and pricing data is successfully retrieved from StripeW the page loadsT the Plan Comparison section should display the available subscription tiers with their respective monthly or annual prices
e2e
ready
error
G the pricing data cannot be fetched from the billing providerW the user visits the pricing routeT the page should display an error state indicating that pricing is currently unavailable
e2e
ready
happy
G a logged-in user with an active subscription views the plansW the user views the Plan Comparison sectionT the current active plan should be highlighted with a 'Current Plan' badge to prevent duplicate subscriptions
e2e
ready
happy
G the user is reviewing the different plan optionsW the user scrolls to the Feature MatrixT a detailed comparison of technical features and limits for each subscription tier must be visible
e2e
ready
happy
G the user selects a preferred planW the user clicks the 'Subscribe' or 'Get Started' button in the CTA sectionT the user should be redirected to the secure Stripe checkout process for payment
e2e
ready
happy
G a diver has successfully completed a payment and the payment gateway has returned a verified statusW the system processes the verification eventT the system should generate a unique digital receipt and booking confirmation and deliver them to the diver's primary email address automatically
integration
ready
error
G a diver has completed a payment but the payment gateway returns a 'pending' or 'failed' statusW the system receives the transaction status updateT the system should not issue a receipt or booking confirmation until a final 'verified' status is received
integration
ready
happy
G a payment is verified for a booking that includes both a trip deposit and equipment rental feesW the digital receipt is generatedT the receipt should include a line-item breakdown showing the specific amount paid for the trip and the specific amount paid for rentals
unit
ready
edge
G a diver has completed a transaction in a non-base currency (e.g., EUR for a USD-based center)W the system generates the automated receiptT the receipt should display the transaction amount in the currency used at checkout along with the transaction date and time
e2e
ready
edge
G a payment is successfully verified but the diver has no primary email address associated with their profileW the system attempts to issue the digital confirmationT the system should log a delivery failure and flag the booking in the dive center owner's dashboard as 'Confirmation Pending - Missing Email'
e2e
ready
happy
G the administrator needs to manage automated communicationW they edit the email templates for booking confirmations and digital receiptsT the system uses these customized templates to automatically notify customers after a payment is verified
integration
ready
happy
G the user has successfully completed the checkout processW the Booking Flow redirects to the final stepT the Confirmation & Receipt section should display a digital receipt and booking confirmation summary
e2e
ready
happy
G the user wants to access proof of purchase for a past transactionW the user navigates to the Billing History pageT the Invoices Table should list all verified payments with direct download links for receipts
e2e
ready
happy
G the dive centre owner is on the financial dashboard and the system has records of both completed transactions and unpaid booking depositsW the dashboard page loadsT the system should display two distinct summaries: one for 'Processed Payments' showing the total funds collected and one for 'Pending Balances' showing the total amount owed by customers
e2e
ready
happy
G the dive centre owner is viewing the payment dashboardW they select a specific date range (e.g., the last 24 hours) using the dashboard date pickerT the processed payments and pending balance totals should update to reflect only the financial activity occurring within that specific window
e2e
ready
edge
G a dive centre has just registered and has no transaction history or active bookingsW the owner navigates to the financial dashboardT the system should display a value of 0.00 for both processed and pending totals with a message indicating no financial data is available for the current period
e2e
ready
error
G the dive centre owner is viewing the dashboard and the payment gateway service is down or failing to return dataW the owner attempts to refresh the dashboard viewT the system should display an error message stating that payment data cannot be retrieved and show the last successfully cached update timestamp
e2e
ready
edge
G the dive centre accepts payments in multiple currencies (e.g., USD and EUR)W the owner views the dashboard totalsT the system should either display the totals grouped by currency or provide a single total converted into the dive center's primary base currency using the current exchange rate
e2e
ready
happy
G the owner is viewing the processed payments listW they click on a specific transaction entryT the system should display a drill-down view showing the associated Booking ID, customer name, and a breakdown of fees (e.g., trip cost vs. equipment rental)
e2e
ready
happy
G the dive center owner wants to reconcile past paymentsW they click on the Billing History LinkT they should be navigated to a detailed view of all past invoices and transactions
e2e
ready
happy
G the administrator is logged in and the dashboard has loadedW viewing the Key Metrics frameT the administrator should see the total revenue and platform-wide financial performance metrics
e2e
ready
happy
G no financial transactions have occurred in the current periodW viewing the Revenue metricT the metric should display zero or an empty state indicator rather than an error
e2e
ready
happy
G the administrator is logged in and viewing the analytics dashboardW the Revenue & Churn Reports section has successfully calculated financial dataT the page displays a breakdown of total revenue, pending balances, and churn rate metrics
e2e
ready
happy
G the system is currently processing historical payment recordsW the administrator navigates to the analytics pageT the loading UI state is displayed with a message indicating that analytics are being calculated
e2e
ready
happy
G the admin is viewing the platform's financial healthW the user navigates to the Admin DashboardT the Key Metrics section should display current revenue figures and a summary of processed payments
e2e
ready
happy
G the admin requires a detailed breakdown of financial trends for reconciliationW the user views the Revenue & Churn Reports section on the Admin Analytics pageT the system should display time-series charts showing daily revenue and pending balances
e2e
ready
happy
G the diver is at the checkout stage and the dive center's base currency is different from the diver's preferred local currencyW the diver selects their local currency from the currency selectorT the system should display the trip total converted to the local currency using the current real-time exchange rate alongside the original base price
e2e
ready
happy
G the diver is on the secure payment page and has selected their local currencyW the diver enters valid payment details and clicks the 'Pay Now' buttonT the system should process the transaction through the secure gateway and display a 'Payment Successful' message in the diver's selected currency
e2e
ready
error
G the diver is at the checkout stage and the currency exchange rate service is temporarily unavailableW the diver attempts to change the display currency to their local currencyT the system should display a message stating that local currency conversion is currently unavailable and default the transaction to the dive center's base currency
e2e
ready
edge
G the diver is in a secure checkout session and the exchange rate fluctuates significantly during the sessionW the diver attempts to finalize the payment after the rate has expired or shifted beyond a set toleranceT the system should notify the diver that the exchange rate has updated and require them to confirm the new total before re-attempting the transaction
integration
ready
error
G the diver is at the payment stage and selects a currency that is not supported by the integrated payment gateway for that specific dive centerW the diver attempts to proceed to paymentT the system should display a validation message indicating that the selected currency cannot be used for this provider and suggest an alternative supported currency
e2e
ready
happy
G the user has no previously saved credit cards or payment detailsW the user navigates to the payment methods management pageT the Saved Payment Methods section should display a message indicating no cards are on file while the Add New Payment Method frame remains interactive
e2e
ready
happy
G the user is viewing their list of saved credit cardsW the user selects the option to set a specific card as the defaultT the system updates the card status to default for future bookings and subscriptions and displays a success confirmation
e2e
ready
happy
G the user is on the Checkout page with a pending trip purchaseW the user views the Order Summary & Currency Selector sectionT they should see an option to select their local currency and view the converted total before paying
e2e
ready
happy
G the user has submitted their payment details on the Checkout pageW the system is communicating with the payment gatewayT the user should see a 'Processing payment...' message to indicate a secure transaction is in progress
e2e
ready
happy
G the diver is in the final checkout stage and submits a payment that is declined by the bankW the payment gateway returns a failure responseT the system should display a clear notification explaining that the payment was declined and provide a 'Retry Payment' button alongside the option to select a different payment method
e2e
ready
happy
G the diver has encountered a payment failure and the 'Retry' interface is visibleW the diver selects an alternative payment method (e.g., switching from Credit Card to PayPal) and submitsT the system should initiate a new transaction request using the updated credentials while maintaining the diver's current booking session and spot reservation
e2e
ready
edge
G the diver is attempting to retry a failed payment for a trip that has reached its maximum capacity during the payment processing delayW the diver clicks the retry buttonT the system should verify spot availability before re-processing and, if the spot is no longer available, display a message explaining that the session expired or the trip is full rather than just a generic payment error
e2e
ready
error
G the diver's payment fails due to a specific resolvable reason, such as 'Insufficient Funds' or 'Expired Card'W the system receives the specific error code from the gatewayT the notification should display the specific reason for failure provided by the bank to help the diver decide whether to retry the same card or switch methods
e2e
ready
error
G the payment service is currently unreachable or returns a 500 status codeW the user attempts to load the payment methods pageT the page should display an error state message informing the user that payment methods are unavailable and to try again later
e2e
ready
error
G the user is adding a new payment methodW the user submits invalid card details or the bank declines the authorizationT the Add New Payment Method frame should display a clear error notification allowing the user to correct the details and retry
e2e
ready
error
G a payment attempt fails during the checkout processW the checkout error state is triggeredT the Payment Failure Handling section should display a clear notification of the failure
e2e
ready
happy
G the user views a booking with an outstanding or failed payment statusW the user navigates to the Booking Details pageT the Actions section should provide a 'Retry Payment' button to allow the user to use a different method
e2e
ready
happy
G the liveaboard owner is configuring a new liveaboard package and the payment settings form is openW they enter a valid deposit percentage and a number of days before departure for the final balanceT the system should save the custom payment terms and apply them to all future bookings for this specific package
e2e
ready
error
G the liveaboard owner is editing the payment requirements for a packageW they attempt to save a deposit percentage that is greater than 100% or less than 0%T the system should block the save and display an error message stating that the deposit must be a value between 0 and 100
e2e
ready
error
G the liveaboard owner is setting a custom payment schedule for a high-value packageW they attempt to save the configuration with a blank value for the deposit percentage or the due date offsetT the system should highlight the empty required fields and prevent the form from being submitted
e2e
ready
edge
G the liveaboard owner is configuring the final balance deadlineW they enter a value of '0' days before departureT the system should accept the value and set the final balance as due on the day of departure
e2e
ready
edge
G the liveaboard owner has updated the deposit requirement for an existing package that already has active bookingsW they save the updated payment requirementsT the system should apply the new requirements only to new booking sessions and leave the financial terms of existing, confirmed bookings unchanged
integration
ready
happy
G a dive center owner is configuring their booking rules for liveaboardsW they access the Notifications & Booking Preferences sectionT they should be able to define custom deposit requirements and set due dates for final balances
unit
ready
happy
G a user is viewing a high-value liveaboard tripW the user views the Payment & Booking Summary on the trip details pageT the system should display the required partial deposit amount and the date the final balance is due
e2e
ready
happy
G the dive center owner is viewing the interactive map with dive site markers visibleW they click on a specific dive site markerT the map should display the locations of nearby dive centers as distinct icons within a defined radius of that site
e2e
ready
error
G the dive center owner has selected a dive site marker that is in a remote locationW the system searches for dive centers within the proximity radiusT the system should display a message within the dive site info panel stating that no dive centers are currently registered near this location
e2e
ready
happy
G the map is displaying several nearby dive centers around a selected siteW the user clicks on a nearby dive center iconT a summary card should appear showing the dive center's name, rating, and a link to their storefront
e2e
ready
edge
G the dive center owner is viewing a dive site that has a high density of competing centers (e.g., more than 10 in a small area)W the user selects the dive site markerT the nearby dive center icons should use a clustering method to group close markers, preventing visual overlap or map clutter
e2e
ready
happy
G a dive center owner is viewing a specific dive site on the MapW the user toggles the view to show nearby businessesT the Map Canvas renders markers for dive centers in proximity to the site pin
e2e
ready
happy
G the user is on the Dive Center Details page for their own businessW the user views the Storefront Header sectionT a map is displayed showing the business's physical location relative to the coastline
e2e
ready
happy
G the user has previously viewed specific map regions while online and then loses internet connectivityW the user navigates back to those previously viewed regions on the mapT the map should display the cached tiles and markers for those regions instead of a blank screen
e2e
ready
edge
G the user is in an offline state and attempts to pan the map to a region that has not been cachedW the user pans the map into an uncached geographical areaT the map should display a placeholder pattern for missing tiles along with a subtle 'Offline' status indicator
e2e
ready
happy
G the user is on a low-bandwidth connection and the map is attempting to load high-resolution detailsW the user clicks on a dive site markerT the system should prioritize displaying the core text details (depth, difficulty) immediately while marine life photos remain in a loading state
e2e
ready
error
G the user is offline and viewing a cached dive site markerW the user clicks the 'Book Now' or 'Full Storefront' link within the marker popupT the system should display a message stating that booking and external storefronts require an active internet connection
e2e
ready
happy
G the user is in an area with no internet connectivityW the user opens the Map pageT the system provides offline support to reference cached site locations on the Map Canvas
e2e
ready
happy
G the user is viewing the interactive dive map and the system contains indexed dive site dataW the map interface loads or the user pans to a new geographic regionT the map should display distinct pins representing the exact locations of dive sites within the current viewport
e2e
ready
happy
G the user is viewing the interactive map with multiple dive site pins visibleW the user clicks or taps on a specific dive site pinT a summary popup should appear anchored to the pin showing the site name, max depth, difficulty level, and a preview of marine life
e2e
ready
edge
G the user is viewing a region of the map where multiple dive sites are located in very close proximity (high density)W the user zooms out to a higher altitudeT individual pins should group into a single cluster marker showing the count of sites, which expands back into individual pins upon zooming in
e2e
ready
edge
G the user pans the map to a remote ocean region where no dive site data has been recorded in the databaseW the map tiles finish loading for that specific coordinate rangeT the map should display no pins and remain clear of markers without throwing an error
e2e
ready
error
G the user is viewing the map and the backend service for retrieving dive site coordinates returns an empty or malformed responseW the user attempts to refresh the map viewT the map should display a persistent notification that dive site data is temporarily unavailable while keeping the base map tiles visible
e2e
ready
happy
G the user has navigated to the map discovery viewW the system is retrieving dive site coordinatesT the Map Canvas displays a loading state with a message rendering map and site markers
e2e
ready
happy
G the map has successfully loaded dive site locationsW the user clicks on a specific pin on the Map CanvasT the Site Summary Popup is displayed with details about the selected dive site
e2e
ready
happy
G the user is viewing the dive centers directoryW the user toggles the view from 'list' to 'map'T the page displays an interactive map with pins representing the geographic locations of the dive centers
e2e
ready
happy
G the application is fetching dive center data from the serverW the data request is in progressT the Center List section shows a 'Loading centers...' indicator to inform the user
integration
ready
happy
G the map is displaying various dive site markersW the user selects a specific difficulty level (e.g., 'Advanced') and sets a maximum depth limit (e.g., '30 meters') in the filter panelT the map should update to display only those markers that match both the selected difficulty and are equal to or shallower than the specified depth
e2e
ready
edge
G the user has applied a depth filter of '18 meters'W the user adjusts the filter to a shallower depth where no sites in the current view meet the criteriaT the map should hide all markers and display a message indicating that no sites match these specific filters in the current area
e2e
ready
happy
G the user is viewing the map with difficulty and depth filters already appliedW the user clicks the 'Reset Filters' button within the filter panelT the map should immediately restore all dive site markers and clear the difficulty and depth selections
e2e
ready
error
G the user is interacting with the maximum depth filter inputW the user attempts to enter a negative number or a non-numeric valueT the input should either block the entry or display a validation error, preventing the filter from being applied with invalid data
e2e
ready
happy
G the map is displaying sites with varying difficulty levelsW the user selects multiple difficulty levels simultaneously (e.g., 'Beginner' and 'Intermediate')T the map should display all sites that match any of the selected difficulty levels provided they also meet the depth requirement
e2e
ready
happy
G the user is viewing the Map pageW the user selects specific difficulty levels or depth ranges in the Filters & Search PanelT the Map Canvas updates to show only the pins that match those certification requirements
e2e
ready
edge
G the user applies highly restrictive filters for depth or difficultyW no dive sites in the database meet the criteriaT the Map page displays an empty state indicating no sites were found
e2e
ready
happy
G the user has granted browser location permissions and is viewing the interactive dive mapW the user clicks the 'Locate Me' buttonT the map should center on the user's current coordinates and display a visual marker representing their position
e2e
ready
error
G the user has previously blocked location permissions for the platformW the user clicks the 'Locate Me' buttonT an informative message should appear explaining that location access is denied and providing instructions on how to enable it in browser settings
e2e
ready
edge
G the user is in a location where no dive sites are indexed within the current zoom levelW the user clicks the 'Locate Me' button and the map centers on their positionT the map should remain centered on the user but display a notification that no dive sites were found in their immediate vicinity
e2e
ready
error
G the browser geolocation service fails to return coordinates or times outW the user clicks the 'Locate Me' buttonT the map view should remain unchanged and a non-intrusive error message should indicate that their current location could not be determined
e2e
ready
happy
G the user is on the Map page and has granted location permissionsW the user clicks the 'Locate Me' button in the Map Controls sectionT the Map Canvas re-centers on the user's current GPS coordinates
e2e
ready
happy
G the user is viewing the interactive map and enters a specific species name into the marine life search barW the user submits the searchT the map should filter to display only dive site markers where that specific species has been tagged, while hiding all other markers
e2e
ready
error
G the user enters a species name that does not exist in the platform's marine life databaseW the user submits the searchT the map should remain in its current state and a message should inform the user that no results were found for that species
e2e
ready
happy
G the user has active marine life filters applied to the mapW the user clicks the 'Clear Search' or 'Reset' button in the search interfaceT all dive site markers should reappear on the map and the search input should be cleared
e2e
ready
edge
G the user enters a species name that is valid but is not present at any dive sites within the current visible map boundsW the user submits the searchT the map should display zero markers and provide an option to 'Zoom out to find results' or automatically adjust the zoom level to show the nearest geographical hotspot
e2e
ready
happy
G the user starts typing a species name in the search barW the user views the resulting listT a list of suggested marine life matches from the database should appear to prevent spelling errors and ensure valid search terms
e2e
ready
happy
G the user is looking for specific species hotspotsW the user enters a marine life name into the Filters & Search PanelT the Map Canvas filters site markers to show only those where that species is frequently spotted
e2e
ready
error
G the map service fails to retrieve species dataW a marine life search is performedT the Map page displays an error state indicating map data is unavailable
e2e
ready
happy
G the dive centre owner is on the notification settings pageW they toggle the 'Email' and 'Push' options for booking inquiries and click saveT the system should persist these preferences and show a confirmation that the notification settings have been updated
e2e
ready
happy
G the dive centre owner has both email and push notifications enabledW a customer completes a new booking for that dive centreT the system should trigger an immediate email alert to the owner's registered address and a push notification to their active device sessions
integration
ready
edge
G the dive centre owner is editing their preferencesW they disable all notification channels (email and push) and attempt to saveT the system should save the preference but display a warning message that they will not receive immediate alerts for new bookings
e2e
ready
error
G the dive centre owner attempts to save notification preferences while the database is unreachableW they click the save buttonT the system should display an error message stating that settings could not be saved and the toggle states should revert to their last known saved values
e2e
ready
happy
G the dive center owner is managing their storefront preferencesW they access the notifications sectionT they should be able to set their booking preferences and notification alerts for new inquiries
unit
ready
happy
G the dive centre owner is on the business profile setup pageW they enter a valid business name, contact email, physical address, and a correctly formatted Tax Identification Number (TIN) and click saveT the system should persist the profile data and display a confirmation that the business profile and tax information are successfully configured
e2e
ready
error
G the dive centre owner is filling out the tax information sectionW they enter a Tax Identification Number that does not match the required alphanumeric format for their registered regionT the system should prevent the save and display a specific validation error indicating the tax ID format is incorrect
e2e
ready
error
G the dive centre owner is on the profile setup pageW they attempt to save the profile while leaving mandatory fields such as 'Legal Business Name' or 'Primary Contact Email' emptyT the system should highlight the missing fields and prevent the form submission until all required contact and identity fields are populated
e2e
ready
error
G the dive centre owner is entering a business phone numberW they enter a number that is too short, too long, or contains invalid characters for a standard international phone formatT the system should display a validation message and require a valid phone number format before allowing the profile to be saved
e2e
ready
edge
G the dive centre owner has already saved their profile and is now updating their tax informationW they modify the Tax Identification Number and save the changesT the system should update the record and display a notice that changes to tax information may be subject to verification before the next payout cycle
e2e
ready
happy
G a dive centre owner is logged in and viewing the pricing pageW the user views the Plan Comparison sectionT the current active plan is identified with a 'current plan' badge to assist in business profile management decisions
e2e
ready
happy
G the user is on the billing page and the system is fetching account dataW the data retrieval is in progressT the page should display a skeleton screen or a spinner indicating that billing info is loading
e2e
ready
happy
G the dive center owner has an active subscriptionW they view the Current Plan sectionT they should see their current plan name, usage metrics, and the next billing date
e2e
ready
happy
G the business owner needs to change their service tierW they interact with the Billing Actions sectionT they should be able to trigger an upgrade or downgrade flow for their current plan
unit
ready
error
G the billing service is unreachable due to a network or server issueW the user attempts to load the billing pageT an error message should be displayed stating that billing information is currently unavailable
e2e
ready
happy
G the user is a dive center owner on the storefront management pageW they navigate to the branding and photos sectionT they should be able to configure their business branding and upload photos to establish a professional image
e2e
ready
happy
G the system is retrieving the dive center's management configurationW the management data is being fetchedT a loading state should be displayed to indicate the storefront settings are being prepared
e2e
ready
happy
G a new user is on the account registration page and selects the Google or Facebook login optionW the user successfully completes the external OAuth provider's authentication flowT the system should create a new diver account using the email and name provided by the provider and redirect the user to their new profile
e2e
ready
error
G the user is on the registration page and initiates a social loginW the user denies the platform access to their profile or cancels the login flow on the external provider's siteT the system should return the user to the registration page and display a message indicating that the login was canceled
e2e
ready
edge
G the user attempts to create an account using a social loginW the email address returned by the social provider is already associated with an existing email/password account on Coral PlaygroundT the system should prompt the user to log in using their password or link the social provider to their existing account instead of creating a duplicate
e2e
ready
error
G the user initiates a social login via a provider (e.g., Facebook)W the external provider's API returns an error or is temporarily unreachableT the system should display a message stating that the social login service is currently unavailable and suggest using an alternative login method
e2e
ready
edge
G the user is using a social provider account that does not have a verified email address associated with itW the user completes the authentication flowT the system should require the user to provide and verify an email address before finalizing the account creation to ensure secure communications
integration
ready
happy
G the user is on the login page and not yet authenticatedW they click on the Google or Facebook social login buttonsT the system initiates the OAuth flow and displays the 'Authenticating...' loading state
e2e
ready
error
G the user provides invalid credentials or the social login provider returns an errorW the authentication process completesT the system displays the 'Login Failed' error message within the login form section
e2e
ready
happy
G the user is on the sign up page in its default stateW the user clicks on the Google or Facebook buttons within the social options sectionT the system should redirect the user to the respective social provider's authentication flow
e2e
ready
happy
G the user has submitted their registration details or social loginW the registration process is being handled by the serverT the page should display the loading state with the message 'Creating your account...'
e2e
ready
error
G the user fills out the registration form with an email that is already registeredW the user clicks the submit buttonT the UI state should transition to error and display 'Unable to register' with a specific validation message
e2e
ready
happy
G the user is on the marketing homepage and not logged inW they click the primary call-to-action button in the hero sectionT they are presented with options to create an account using Google or Facebook social logins
e2e
ready
happy
G the user is viewing the final conversion section at the bottom of the pageW they click the 'Sign Up Now' buttonT the system redirects them to the authentication portal featuring social login providers
e2e
ready
error
G the landing content fails to load due to a network timeoutW the user visits the root pathT an error message is displayed with a 'Retry' button instead of the marketing sections
e2e
ready
happy
G the user is on the login pageW they choose to authenticate without an email/passwordT they should see social login buttons for Google and Facebook
e2e
ready
happy
G the user is on the sign up pageW they want to create a new account quicklyT they should be presented with social signup options to register via third-party providers
e2e
ready
happy
G the diver is browsing dive sites and finds a site that is not already in their bucket listW the diver clicks the bucket list icon or 'Save to Bucket List' button for that siteT the system should add the site to the diver's profile and update the button state to indicate the site is saved
e2e
ready
happy
G the diver is viewing their personal bucket list and selects a previously saved dive siteW the diver clicks the 'Remove' or 'Unsave' option for that specific siteT the site should be removed from the diver's bucket list and no longer appear in their saved items view
e2e
ready
edge
G the diver is attempting to add a dive site to their bucket list and has reached the maximum allowed number of saved sitesW the diver clicks the 'Save to Bucket List' buttonT the system should prevent the addition and display a message stating that the bucket list is full and an item must be removed to add a new one
e2e
ready
error
G the diver is viewing a dive site that has been marked as 'Inactive' or 'Closed' by the platform administratorW the diver attempts to click the 'Save to Bucket List' buttonT the button should be disabled and a tooltip should explain that inactive sites cannot be added to a bucket list
e2e
ready
happy
G the diver has added a dive site to their bucket list and navigates to the 'My Bucket List' section of their profileW the profile page loadsT the saved dive site should be displayed with its name, a thumbnail image, and a direct link to the site's full detail page
e2e
ready
happy
G the diver has not yet saved any dive sites or tripsW they view their bucket list pageT they should see a message stating 'Your bucket list is empty' with an option to browse sites
e2e
ready
happy
G the diver has saved multiple locationsW they view the bucket listT they should see a map visualization of their favorite sites and a list of saved trips
e2e
ready
happy
G the diver is on the profile management page and has uploaded multiple digital dive logsW the diver views their profile summaryT the system should display an automatically calculated 'Total Logged Dives' count based on the number of entries in the diver's digital log
e2e
ready
happy
G the diver is viewing the certification section of their profile and has previously uploaded verified credentialsW the diver views their public-facing profile previewT the system should display a list of all verified certification levels and the total dive count to demonstrate the diver's experience level
e2e
ready
error
G the diver is in the certification upload formW the diver attempts to submit the form with a certification date that is in the futureT the system should prevent the upload and display a validation error stating that the certification date cannot be a future date
e2e
ready
edge
G the diver has zero logged dives and no uploaded certificationsW the diver views their profileT the system should display the total logged dives as '0' and show a prompt to 'Upload your first certification' or 'Log your first dive'
e2e
ready
edge
G the diver has uploaded a certification that has been marked as 'Expired' based on its recorded expiration dateW the diver views the certification list in their profileT the system should display a visual warning indicator next to that specific credential noting it is no longer valid for active bookings
e2e
ready
happy
G the diver is on their profile pageW they view the diving statistics sectionT they should see their total logged dives and quick links to manage their certifications
e2e
ready
happy
G the diver is in the Certification VaultW they select the upload optionT they should be able to upload and categorize their scuba certifications for verification
e2e
ready
happy
G the diver has both upcoming trips (departure date in the future) and past trips (departure date in the past) recorded in their accountW the diver navigates to the booking dashboardT the dashboard should display two distinct sections or filters for 'Upcoming' and 'Past' bookings, with each entry showing the trip name, date, dive center, and status
e2e
ready
edge
G the diver has never booked a trip through the platformW the diver views the booking dashboardT the system should display an empty state message for both upcoming and past sections with a call-to-action button to 'Explore Dive Sites'
e2e
ready
edge
G the diver has a booking that was canceled by the dive center or the userW the diver views the booking dashboardT the canceled booking should appear in the dashboard with a clear 'Canceled' status badge and be sorted into the 'Past' section regardless of the original departure date
e2e
ready
error
G the booking data service fails to respond or returns an errorW the diver attempts to load the booking dashboardT the dashboard should display a message stating that booking information is currently unavailable and provide a retry button
e2e
ready
happy
G the diver is viewing the dashboard and has multiple upcoming bookingsW the diver reviews the 'Upcoming' sectionT the bookings should be sorted chronologically with the trip departing soonest appearing at the top of the list
e2e
ready
happy
G the diver is looking at their personal dashboardW they scroll to the bookings sectionT they should see a consolidated summary of both upcoming and past bookings
e2e
ready
error
G the system fails to retrieve the user's booking dataW the dashboard is loadedT an error state should be displayed indicating the dashboard is currently unavailable
e2e
ready
happy
G the business owner is in the security settings and has provided a valid phone number or selected an authenticator app optionW they submit the request to enable MFAT the system should generate a verification code or QR code and prompt the user to enter the code to confirm the setup
e2e
ready
happy
G the system has presented the verification challenge to the business owner during setupW the user enters a valid, matching verification codeT the system should enable MFA on the account and display a set of one-time recovery codes for download
e2e
ready
error
G the system has presented the verification challenge to the business owner during setupW the user enters an incorrect or expired verification codeT the system should display a validation error and keep MFA in a disabled state until a valid code is provided
e2e
ready
edge
G the business owner already has MFA enabled on their accountW they attempt to access the MFA setup screenT the system should display the current MFA status as 'Active' and provide an option to disable or reconfigure the settings
e2e
ready
error
G the business owner is enabling MFA via SMSW they enter a phone number in an invalid format or from an unsupported regionT the system should block the request and display a message indicating the phone number is not valid for MFA delivery
e2e
ready
edge
G the business owner is in the process of confirming MFA setupW the session times out or they navigate away before entering the verification codeT the system should revert the account to a non-MFA state to ensure the user is not locked out by an incomplete configuration
e2e
ready
happy
G the user has landed on the reset password page via a valid security tokenW the user views the New Password FormT the Security Tips section should be visible to guide the user on creating a strong, secure password
e2e
ready
happy
G the user enters a new password and submits the formW the system is processing the updateT the page should transition to the loading state and display 'Updating password...'
e2e
ready
error
G the user submits a new password but the token has expired or a network error occursW the update request completes with a failureT the page should display an error state indicating that the reset failed
e2e
ready
happy
G the user has successfully entered their primary email and passwordW the account has MFA enabledT the user is prompted to enter their secondary authentication code before login is finalized
e2e
ready
happy
G the user has forgotten their password and is on the forgot password pageW the user enters a valid email address associated with their account and clicks the submit buttonT the system should display a loading indicator with the message 'Sending reset link...' before confirming the email has been sent
e2e
ready
error
G the user is on the forgot password page and the email service is unavailableW the user submits their email address to request a reset linkT the system should display an error message stating 'Unable to send reset email' to inform the user of the failure
e2e
ready
happy
G the user is on the forgot password page and needs help or further informationW the page loads in its initial stateT the system should display the header 'Reset your password' alongside a link to contact support
e2e
ready
happy
G the business owner is on the account settings pageW they navigate to the security sectionT they should see options to enable and configure Multi-Factor Authentication (MFA)
e2e
ready