- ✅ Empty fields (3 required validation errors)
- ✅ One empty field (required validation error)
- ✅ Existing email (email taken validation error)
- ✅ Successfully signed up (redirects to step 2)
- ✅ Empty fields (2 required validation errors)
- ✅ One empty field (required validation error)
- ✅ Successfully signed up (redirects to step 3)
- ✅ Empty fields (3 required validation errors)
- ✅ Empty checkbox (required validation error)
- ✅ Existing email (email taken validation error)
- ✅ Successfully signed up (redirects to dashboard)
- ✅ Empty fields (redirects to /login with error message)
- ✅ Valid fields (redirects to user dashboard)
- ✅ Empty fields (error message)
- ✅ Valid fields (redirects to user dashboard)
- ✅ Users see their notifications
- ✅ Users can dismiss a single notification
- ✅ Users can dismiss all notifications
- ✅ Authors see "Create Book" button
- ✅ Authors see list of their books
- ✅ Readers see list of books they are reading
- ✅ Invitees see pending invitations on their dashboard
- ✅ Invitees can accept invitation from dashboard (redirects to book details page)
- ✅ Invitees can decline invitation from dashboard (redirects to invitation declined page)
- ✅ Empty fields (flashes title error message)
- ✅ Redirected to book page
- ✅ Edits title and author name
- ✅ Edits about text
- ✅ Edits critique text
- ✅ Adds a chapter (goes to chapter /new form)
- ✅ Adds a questionnaire (goes to chapter /new?q=1 form)
- ✅ View chapter (goes to chapter details page)
- ✅ Hides chapter (adds "Hidden" to the chapter title and changes to unlocked icon)
- ✅ Edits chapter (goes to chapter edit page)
- ✅ Deletes chapter/questionnaire (opens prompt and stays on the same page)
- ✅ Edits chapter title inline
- ✅ Toggle automatic chapter number
- ✅ Sorts chapters
- ✅ Enable/disable reading reminders (updates status and enables/disables threshold input)
- ✅ Updated reading reminders threshold
- ✅ Saves other settings
- ✅ Deletes book
- ✅ Enable/disable signup link
- ✅ Author can search for existing readers while typing email address
- ✅ Author can send invitation email (display success message)
- ✅ Author can send invitation email w/ custom message (display success message)
- ✅ Updates pending invitations list
- ✅ Author can resend an invitation
- ✅ Author can cancel an invitation
- ✅ Tracking by chapters/versions works
- ✅ Reader status updates
- ✅ Reader last seen updates
- ✅ Author can see feedback by chapter
- ✅ Author can search feedback by keywork
- ✅ Author can filter feedback by marks
- ✅ Author can filter feedback by readers
- ✅ Author can filter feedback by chapters
- ✅ Author can reply to feedback
- ✅ Author can edit replies to feedback
- ✅ Author can select marks for feedback
- ✅ Empty fields (redirects to chapter /done page)
- ✅ All fields filled (redirects to chapter /done page)
- ✅ Switch between rich text and markdown
- ⛔️ Upload image (missing Uploadcare API key)
- ✅ Empty fields (redirects to chapter /done page)
- ✅ All fields filled (redirects to chapter /done page)
- ✅ Switch between rich text and markdown
- ⛔️ Upload image (missing Uploadcare API key)
- ✅ Notify readers
- ⛔️ Notify readers via email (try again when API key is added)
- ✅ Empty fields (redirects to chapter /done page)
- ✅ All fields filled (redirects to chapter /done page)
- ✅ Switch between rich text and markdown
- ⛔️ Upload image (missing Uploadcare API key)
- ✅ Empty fields (redirects to chapter /done page)
- ✅ All fields filled (redirects to chapter /done page)
- ✅ Switch between rich text and markdown
- ⛔️ Upload image (missing Uploadcare API key)
- ✅ Notify readers
- ⛔️ Notify readers via email (try again when API key is added)
- ✅ Sees list of chapters, read status, and words count
- ✅ Updates chapter read status when a feedback is left
- ✅ Toggles email notifications preference
- ✅ Clicking "I finished reading" changes finish reading text
- ✅ Clicking "I need to quit" shows a reason textarea
- ✅ Attempting to quit with empty/short textarea (flashes validation errors)
- ✅ Entering a valid quit reason changes finish reading text
- ✅ Changes author's options text based on book settings
- ✅ Readers can see comments they left
- ✅ Readers can see author replies to their comments
- ✅ Readers can edit their comments
- ✅ Readers can see chapter content
- ✅ Readers can bookmark paragraphs
- ✅ Readers can adjust display settings (night mode, font size, paragraph style)
- ✅ Readers can comment
- ✅ Readers can draft comments
- ✅ Readers can resume editing draft comments
- ✅ User can update personal info (flashes success message)
- ✅ User can update password (flashes success message)
- ✅ User can add new email addresses (sends verification email)
- ✅ Opening the verification link adds the email address
- ✅ User can change the primary email address
- ✅ User can delete an email address
- ✅ User can update account type (flashes success message)
- ✅ User can create a reader profile (opens the form)
- ✅ User can update their reader profile (flashes "Saved!" message)
- ✅ Reader can't subscribe to a plan (sees always free message)
- ✅ Author can add a credit card (sees card details and can select plan)
- ✅ Author can remove a credit card
- ⛔️ Author can apply a valid coupon code (can't test with access to Stripe)
- ✅ Author can not apply an invalid coupon code (sees error alert)
- ✅ Author can subscribe to a plan
- ✅ Author can turn off auto-renewal
- ✅ Author can turn on auto-renewal
- ✅ Accept links open welcome page (with buttons to login or signup)
- ✅ Accepted links open login page with invitation accepted message
- ✅ Decline links open declined page
- ✅ Declined links open 404 page
- ✅ Empty fields (flashes validation errors)
- ✅ One empty field (flashes validation error)
- ✅ Existing email (email taken validation error)
- ✅ Successfully signed up (redirects to dashboard)