Phase 5: User appointments view and cancellation with UI and e2e tests

This commit is contained in:
counterweight 2025-12-21 00:24:16 +01:00
parent 8ff03a8ec3
commit 5108a620e7
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
14 changed files with 1539 additions and 4 deletions

View file

@ -1,4 +1,10 @@
{
"status": "passed",
"failedTests": []
"status": "failed",
"failedTests": [
"647d672ac99574a52088-7123e0baf27b194c0b82",
"647d672ac99574a52088-a2e9f69e9c9ef92dc2bb",
"647d672ac99574a52088-f95d3555fba5395917f0",
"a3a10f2351dcc49e1cb9-ac24d656b0f11d39342d",
"50879ed375f8988ef978-7be9cdef76510785fb98"
]
}

View file

@ -0,0 +1,123 @@
# Page snapshot
```yaml
- generic [active] [ref=e1]:
- main [ref=e2]:
- generic [ref=e3]:
- generic [ref=e4]:
- link "Audit" [ref=e6] [cursor=pointer]:
- /url: /audit
- generic [ref=e7]:
- text: •
- link "Invites" [ref=e8] [cursor=pointer]:
- /url: /admin/invites
- generic [ref=e9]: •Availability
- generic [ref=e10]:
- generic [ref=e11]: admin@example.com
- button "Sign out" [ref=e12] [cursor=pointer]
- generic [ref=e14]:
- generic [ref=e16]:
- heading "Availability" [level=1] [ref=e17]
- paragraph [ref=e18]: Configure your available time slots for the next 30 days
- generic [ref=e19]:
- generic [ref=e20] [cursor=pointer]:
- generic [ref=e21]:
- generic [ref=e22]: Mon, Dec 22
- button "⎘" [ref=e23]
- generic [ref=e25]: 09:00 - 12:00
- generic [ref=e26] [cursor=pointer]:
- generic [ref=e28]: Tue, Dec 23
- generic [ref=e30]: No availability
- generic [ref=e31] [cursor=pointer]:
- generic [ref=e33]: Wed, Dec 24
- generic [ref=e35]: No availability
- generic [ref=e36] [cursor=pointer]:
- generic [ref=e38]: Thu, Dec 25
- generic [ref=e40]: No availability
- generic [ref=e41] [cursor=pointer]:
- generic [ref=e43]: Fri, Dec 26
- generic [ref=e45]: No availability
- generic [ref=e46] [cursor=pointer]:
- generic [ref=e48]: Sat, Dec 27
- generic [ref=e50]: No availability
- generic [ref=e51] [cursor=pointer]:
- generic [ref=e53]: Sun, Dec 28
- generic [ref=e55]: No availability
- generic [ref=e56] [cursor=pointer]:
- generic [ref=e58]: Mon, Dec 29
- generic [ref=e60]: No availability
- generic [ref=e61] [cursor=pointer]:
- generic [ref=e63]: Tue, Dec 30
- generic [ref=e65]: No availability
- generic [ref=e66] [cursor=pointer]:
- generic [ref=e68]: Wed, Dec 31
- generic [ref=e70]: No availability
- generic [ref=e71] [cursor=pointer]:
- generic [ref=e73]: Thu, Jan 1
- generic [ref=e75]: No availability
- generic [ref=e76] [cursor=pointer]:
- generic [ref=e78]: Fri, Jan 2
- generic [ref=e80]: No availability
- generic [ref=e81] [cursor=pointer]:
- generic [ref=e83]: Sat, Jan 3
- generic [ref=e85]: No availability
- generic [ref=e86] [cursor=pointer]:
- generic [ref=e88]: Sun, Jan 4
- generic [ref=e90]: No availability
- generic [ref=e91] [cursor=pointer]:
- generic [ref=e93]: Mon, Jan 5
- generic [ref=e95]: No availability
- generic [ref=e96] [cursor=pointer]:
- generic [ref=e98]: Tue, Jan 6
- generic [ref=e100]: No availability
- generic [ref=e101] [cursor=pointer]:
- generic [ref=e103]: Wed, Jan 7
- generic [ref=e105]: No availability
- generic [ref=e106] [cursor=pointer]:
- generic [ref=e108]: Thu, Jan 8
- generic [ref=e110]: No availability
- generic [ref=e111] [cursor=pointer]:
- generic [ref=e113]: Fri, Jan 9
- generic [ref=e115]: No availability
- generic [ref=e116] [cursor=pointer]:
- generic [ref=e118]: Sat, Jan 10
- generic [ref=e120]: No availability
- generic [ref=e121] [cursor=pointer]:
- generic [ref=e123]: Sun, Jan 11
- generic [ref=e125]: No availability
- generic [ref=e126] [cursor=pointer]:
- generic [ref=e128]: Mon, Jan 12
- generic [ref=e130]: No availability
- generic [ref=e131] [cursor=pointer]:
- generic [ref=e133]: Tue, Jan 13
- generic [ref=e135]: No availability
- generic [ref=e136] [cursor=pointer]:
- generic [ref=e138]: Wed, Jan 14
- generic [ref=e140]: No availability
- generic [ref=e141] [cursor=pointer]:
- generic [ref=e143]: Thu, Jan 15
- generic [ref=e145]: No availability
- generic [ref=e146] [cursor=pointer]:
- generic [ref=e148]: Fri, Jan 16
- generic [ref=e150]: No availability
- generic [ref=e151] [cursor=pointer]:
- generic [ref=e153]: Sat, Jan 17
- generic [ref=e155]: No availability
- generic [ref=e156] [cursor=pointer]:
- generic [ref=e158]: Sun, Jan 18
- generic [ref=e160]: No availability
- generic [ref=e161] [cursor=pointer]:
- generic [ref=e163]: Mon, Jan 19
- generic [ref=e165]: No availability
- generic [ref=e166] [cursor=pointer]:
- generic [ref=e168]: Tue, Jan 20
- generic [ref=e170]: No availability
- status [ref=e171]:
- generic [ref=e172]:
- img [ref=e174]
- generic [ref=e176]:
- text: Static route
- button "Hide static indicator" [ref=e177] [cursor=pointer]:
- img [ref=e178]
- alert [ref=e181]
```

View file

@ -0,0 +1,123 @@
# Page snapshot
```yaml
- generic [active] [ref=e1]:
- main [ref=e2]:
- generic [ref=e3]:
- generic [ref=e4]:
- link "Audit" [ref=e6] [cursor=pointer]:
- /url: /audit
- generic [ref=e7]:
- text: •
- link "Invites" [ref=e8] [cursor=pointer]:
- /url: /admin/invites
- generic [ref=e9]: •Availability
- generic [ref=e10]:
- generic [ref=e11]: admin@example.com
- button "Sign out" [ref=e12] [cursor=pointer]
- generic [ref=e14]:
- generic [ref=e16]:
- heading "Availability" [level=1] [ref=e17]
- paragraph [ref=e18]: Configure your available time slots for the next 30 days
- generic [ref=e19]:
- generic [ref=e20] [cursor=pointer]:
- generic [ref=e21]:
- generic [ref=e22]: Mon, Dec 22
- button "⎘" [ref=e23]
- generic [ref=e25]: 09:00 - 12:00
- generic [ref=e26] [cursor=pointer]:
- generic [ref=e28]: Tue, Dec 23
- generic [ref=e30]: No availability
- generic [ref=e31] [cursor=pointer]:
- generic [ref=e33]: Wed, Dec 24
- generic [ref=e35]: No availability
- generic [ref=e36] [cursor=pointer]:
- generic [ref=e38]: Thu, Dec 25
- generic [ref=e40]: No availability
- generic [ref=e41] [cursor=pointer]:
- generic [ref=e43]: Fri, Dec 26
- generic [ref=e45]: No availability
- generic [ref=e46] [cursor=pointer]:
- generic [ref=e48]: Sat, Dec 27
- generic [ref=e50]: No availability
- generic [ref=e51] [cursor=pointer]:
- generic [ref=e53]: Sun, Dec 28
- generic [ref=e55]: No availability
- generic [ref=e56] [cursor=pointer]:
- generic [ref=e58]: Mon, Dec 29
- generic [ref=e60]: No availability
- generic [ref=e61] [cursor=pointer]:
- generic [ref=e63]: Tue, Dec 30
- generic [ref=e65]: No availability
- generic [ref=e66] [cursor=pointer]:
- generic [ref=e68]: Wed, Dec 31
- generic [ref=e70]: No availability
- generic [ref=e71] [cursor=pointer]:
- generic [ref=e73]: Thu, Jan 1
- generic [ref=e75]: No availability
- generic [ref=e76] [cursor=pointer]:
- generic [ref=e78]: Fri, Jan 2
- generic [ref=e80]: No availability
- generic [ref=e81] [cursor=pointer]:
- generic [ref=e83]: Sat, Jan 3
- generic [ref=e85]: No availability
- generic [ref=e86] [cursor=pointer]:
- generic [ref=e88]: Sun, Jan 4
- generic [ref=e90]: No availability
- generic [ref=e91] [cursor=pointer]:
- generic [ref=e93]: Mon, Jan 5
- generic [ref=e95]: No availability
- generic [ref=e96] [cursor=pointer]:
- generic [ref=e98]: Tue, Jan 6
- generic [ref=e100]: No availability
- generic [ref=e101] [cursor=pointer]:
- generic [ref=e103]: Wed, Jan 7
- generic [ref=e105]: No availability
- generic [ref=e106] [cursor=pointer]:
- generic [ref=e108]: Thu, Jan 8
- generic [ref=e110]: No availability
- generic [ref=e111] [cursor=pointer]:
- generic [ref=e113]: Fri, Jan 9
- generic [ref=e115]: No availability
- generic [ref=e116] [cursor=pointer]:
- generic [ref=e118]: Sat, Jan 10
- generic [ref=e120]: No availability
- generic [ref=e121] [cursor=pointer]:
- generic [ref=e123]: Sun, Jan 11
- generic [ref=e125]: No availability
- generic [ref=e126] [cursor=pointer]:
- generic [ref=e128]: Mon, Jan 12
- generic [ref=e130]: No availability
- generic [ref=e131] [cursor=pointer]:
- generic [ref=e133]: Tue, Jan 13
- generic [ref=e135]: No availability
- generic [ref=e136] [cursor=pointer]:
- generic [ref=e138]: Wed, Jan 14
- generic [ref=e140]: No availability
- generic [ref=e141] [cursor=pointer]:
- generic [ref=e143]: Thu, Jan 15
- generic [ref=e145]: No availability
- generic [ref=e146] [cursor=pointer]:
- generic [ref=e148]: Fri, Jan 16
- generic [ref=e150]: No availability
- generic [ref=e151] [cursor=pointer]:
- generic [ref=e153]: Sat, Jan 17
- generic [ref=e155]: No availability
- generic [ref=e156] [cursor=pointer]:
- generic [ref=e158]: Sun, Jan 18
- generic [ref=e160]: No availability
- generic [ref=e161] [cursor=pointer]:
- generic [ref=e163]: Mon, Jan 19
- generic [ref=e165]: No availability
- generic [ref=e166] [cursor=pointer]:
- generic [ref=e168]: Tue, Jan 20
- generic [ref=e170]: No availability
- status [ref=e171]:
- generic [ref=e172]:
- img [ref=e174]
- generic [ref=e176]:
- text: Static route
- button "Hide static indicator" [ref=e177] [cursor=pointer]:
- img [ref=e178]
- alert [ref=e181]
```

View file

@ -0,0 +1,123 @@
# Page snapshot
```yaml
- generic [active] [ref=e1]:
- main [ref=e2]:
- generic [ref=e3]:
- generic [ref=e4]:
- link "Audit" [ref=e6] [cursor=pointer]:
- /url: /audit
- generic [ref=e7]:
- text: •
- link "Invites" [ref=e8] [cursor=pointer]:
- /url: /admin/invites
- generic [ref=e9]: •Availability
- generic [ref=e10]:
- generic [ref=e11]: admin@example.com
- button "Sign out" [ref=e12] [cursor=pointer]
- generic [ref=e14]:
- generic [ref=e16]:
- heading "Availability" [level=1] [ref=e17]
- paragraph [ref=e18]: Configure your available time slots for the next 30 days
- generic [ref=e19]:
- generic [ref=e20] [cursor=pointer]:
- generic [ref=e21]:
- generic [ref=e22]: Mon, Dec 22
- button "⎘" [ref=e23]
- generic [ref=e25]: 09:00 - 12:00
- generic [ref=e26] [cursor=pointer]:
- generic [ref=e28]: Tue, Dec 23
- generic [ref=e30]: No availability
- generic [ref=e31] [cursor=pointer]:
- generic [ref=e33]: Wed, Dec 24
- generic [ref=e35]: No availability
- generic [ref=e36] [cursor=pointer]:
- generic [ref=e38]: Thu, Dec 25
- generic [ref=e40]: No availability
- generic [ref=e41] [cursor=pointer]:
- generic [ref=e43]: Fri, Dec 26
- generic [ref=e45]: No availability
- generic [ref=e46] [cursor=pointer]:
- generic [ref=e48]: Sat, Dec 27
- generic [ref=e50]: No availability
- generic [ref=e51] [cursor=pointer]:
- generic [ref=e53]: Sun, Dec 28
- generic [ref=e55]: No availability
- generic [ref=e56] [cursor=pointer]:
- generic [ref=e58]: Mon, Dec 29
- generic [ref=e60]: No availability
- generic [ref=e61] [cursor=pointer]:
- generic [ref=e63]: Tue, Dec 30
- generic [ref=e65]: No availability
- generic [ref=e66] [cursor=pointer]:
- generic [ref=e68]: Wed, Dec 31
- generic [ref=e70]: No availability
- generic [ref=e71] [cursor=pointer]:
- generic [ref=e73]: Thu, Jan 1
- generic [ref=e75]: No availability
- generic [ref=e76] [cursor=pointer]:
- generic [ref=e78]: Fri, Jan 2
- generic [ref=e80]: No availability
- generic [ref=e81] [cursor=pointer]:
- generic [ref=e83]: Sat, Jan 3
- generic [ref=e85]: No availability
- generic [ref=e86] [cursor=pointer]:
- generic [ref=e88]: Sun, Jan 4
- generic [ref=e90]: No availability
- generic [ref=e91] [cursor=pointer]:
- generic [ref=e93]: Mon, Jan 5
- generic [ref=e95]: No availability
- generic [ref=e96] [cursor=pointer]:
- generic [ref=e98]: Tue, Jan 6
- generic [ref=e100]: No availability
- generic [ref=e101] [cursor=pointer]:
- generic [ref=e103]: Wed, Jan 7
- generic [ref=e105]: No availability
- generic [ref=e106] [cursor=pointer]:
- generic [ref=e108]: Thu, Jan 8
- generic [ref=e110]: No availability
- generic [ref=e111] [cursor=pointer]:
- generic [ref=e113]: Fri, Jan 9
- generic [ref=e115]: No availability
- generic [ref=e116] [cursor=pointer]:
- generic [ref=e118]: Sat, Jan 10
- generic [ref=e120]: No availability
- generic [ref=e121] [cursor=pointer]:
- generic [ref=e123]: Sun, Jan 11
- generic [ref=e125]: No availability
- generic [ref=e126] [cursor=pointer]:
- generic [ref=e128]: Mon, Jan 12
- generic [ref=e130]: No availability
- generic [ref=e131] [cursor=pointer]:
- generic [ref=e133]: Tue, Jan 13
- generic [ref=e135]: No availability
- generic [ref=e136] [cursor=pointer]:
- generic [ref=e138]: Wed, Jan 14
- generic [ref=e140]: No availability
- generic [ref=e141] [cursor=pointer]:
- generic [ref=e143]: Thu, Jan 15
- generic [ref=e145]: No availability
- generic [ref=e146] [cursor=pointer]:
- generic [ref=e148]: Fri, Jan 16
- generic [ref=e150]: No availability
- generic [ref=e151] [cursor=pointer]:
- generic [ref=e153]: Sat, Jan 17
- generic [ref=e155]: No availability
- generic [ref=e156] [cursor=pointer]:
- generic [ref=e158]: Sun, Jan 18
- generic [ref=e160]: No availability
- generic [ref=e161] [cursor=pointer]:
- generic [ref=e163]: Mon, Jan 19
- generic [ref=e165]: No availability
- generic [ref=e166] [cursor=pointer]:
- generic [ref=e168]: Tue, Jan 20
- generic [ref=e170]: No availability
- status [ref=e171]:
- generic [ref=e172]:
- img [ref=e174]
- generic [ref=e176]:
- text: Static route
- button "Hide static indicator" [ref=e177] [cursor=pointer]:
- img [ref=e178]
- alert [ref=e181]
```

View file

@ -0,0 +1,160 @@
# Page snapshot
```yaml
- generic [active] [ref=e1]:
- generic [ref=e2]:
- generic [ref=e3]:
- generic [ref=e4]:
- link "Counter" [ref=e6] [cursor=pointer]:
- /url: /
- generic [ref=e7]:
- text: •
- link "Sum" [ref=e8] [cursor=pointer]:
- /url: /sum
- generic [ref=e9]: •Book
- generic [ref=e10]:
- text: •
- link "Appointments" [ref=e11] [cursor=pointer]:
- /url: /appointments
- generic [ref=e12]:
- text: •
- link "My Invites" [ref=e13] [cursor=pointer]:
- /url: /invites
- generic [ref=e14]:
- text: •
- link "My Profile" [ref=e15] [cursor=pointer]:
- /url: /profile
- generic [ref=e16]:
- generic [ref=e17]: user@example.com
- button "Sign out" [ref=e18] [cursor=pointer]
- main [ref=e19]:
- heading "Book an Appointment" [level=1] [ref=e20]
- paragraph [ref=e21]: Select a date to see available 15-minute slots
- generic [ref=e22]: "Request failed: 409"
- generic [ref=e23]:
- heading "Select a Date" [level=2] [ref=e24]
- generic [ref=e25]:
- button "Mon Dec 22" [ref=e26] [cursor=pointer]:
- generic [ref=e27]: Mon
- generic [ref=e28]: Dec 22
- button "Tue Dec 23" [ref=e29] [cursor=pointer]:
- generic [ref=e30]: Tue
- generic [ref=e31]: Dec 23
- button "Wed Dec 24" [ref=e32] [cursor=pointer]:
- generic [ref=e33]: Wed
- generic [ref=e34]: Dec 24
- button "Thu Dec 25" [ref=e35] [cursor=pointer]:
- generic [ref=e36]: Thu
- generic [ref=e37]: Dec 25
- button "Fri Dec 26" [ref=e38] [cursor=pointer]:
- generic [ref=e39]: Fri
- generic [ref=e40]: Dec 26
- button "Sat Dec 27" [ref=e41] [cursor=pointer]:
- generic [ref=e42]: Sat
- generic [ref=e43]: Dec 27
- button "Sun Dec 28" [ref=e44] [cursor=pointer]:
- generic [ref=e45]: Sun
- generic [ref=e46]: Dec 28
- button "Mon Dec 29" [ref=e47] [cursor=pointer]:
- generic [ref=e48]: Mon
- generic [ref=e49]: Dec 29
- button "Tue Dec 30" [ref=e50] [cursor=pointer]:
- generic [ref=e51]: Tue
- generic [ref=e52]: Dec 30
- button "Wed Dec 31" [ref=e53] [cursor=pointer]:
- generic [ref=e54]: Wed
- generic [ref=e55]: Dec 31
- button "Thu Jan 1" [ref=e56] [cursor=pointer]:
- generic [ref=e57]: Thu
- generic [ref=e58]: Jan 1
- button "Fri Jan 2" [ref=e59] [cursor=pointer]:
- generic [ref=e60]: Fri
- generic [ref=e61]: Jan 2
- button "Sat Jan 3" [ref=e62] [cursor=pointer]:
- generic [ref=e63]: Sat
- generic [ref=e64]: Jan 3
- button "Sun Jan 4" [ref=e65] [cursor=pointer]:
- generic [ref=e66]: Sun
- generic [ref=e67]: Jan 4
- button "Mon Jan 5" [ref=e68] [cursor=pointer]:
- generic [ref=e69]: Mon
- generic [ref=e70]: Jan 5
- button "Tue Jan 6" [ref=e71] [cursor=pointer]:
- generic [ref=e72]: Tue
- generic [ref=e73]: Jan 6
- button "Wed Jan 7" [ref=e74] [cursor=pointer]:
- generic [ref=e75]: Wed
- generic [ref=e76]: Jan 7
- button "Thu Jan 8" [ref=e77] [cursor=pointer]:
- generic [ref=e78]: Thu
- generic [ref=e79]: Jan 8
- button "Fri Jan 9" [ref=e80] [cursor=pointer]:
- generic [ref=e81]: Fri
- generic [ref=e82]: Jan 9
- button "Sat Jan 10" [ref=e83] [cursor=pointer]:
- generic [ref=e84]: Sat
- generic [ref=e85]: Jan 10
- button "Sun Jan 11" [ref=e86] [cursor=pointer]:
- generic [ref=e87]: Sun
- generic [ref=e88]: Jan 11
- button "Mon Jan 12" [ref=e89] [cursor=pointer]:
- generic [ref=e90]: Mon
- generic [ref=e91]: Jan 12
- button "Tue Jan 13" [ref=e92] [cursor=pointer]:
- generic [ref=e93]: Tue
- generic [ref=e94]: Jan 13
- button "Wed Jan 14" [ref=e95] [cursor=pointer]:
- generic [ref=e96]: Wed
- generic [ref=e97]: Jan 14
- button "Thu Jan 15" [ref=e98] [cursor=pointer]:
- generic [ref=e99]: Thu
- generic [ref=e100]: Jan 15
- button "Fri Jan 16" [ref=e101] [cursor=pointer]:
- generic [ref=e102]: Fri
- generic [ref=e103]: Jan 16
- button "Sat Jan 17" [ref=e104] [cursor=pointer]:
- generic [ref=e105]: Sat
- generic [ref=e106]: Jan 17
- button "Sun Jan 18" [ref=e107] [cursor=pointer]:
- generic [ref=e108]: Sun
- generic [ref=e109]: Jan 18
- button "Mon Jan 19" [ref=e110] [cursor=pointer]:
- generic [ref=e111]: Mon
- generic [ref=e112]: Jan 19
- button "Tue Jan 20" [ref=e113] [cursor=pointer]:
- generic [ref=e114]: Tue
- generic [ref=e115]: Jan 20
- generic [ref=e116]:
- heading "Available Slots for Monday, December 22" [level=2] [ref=e117]
- generic [ref=e118]:
- button "10:00" [ref=e119] [cursor=pointer]
- button "10:45" [ref=e120] [cursor=pointer]
- button "11:00" [ref=e121] [cursor=pointer]
- button "11:15" [ref=e122] [cursor=pointer]
- button "11:30" [ref=e123] [cursor=pointer]
- button "11:45" [ref=e124] [cursor=pointer]
- button "12:00" [ref=e125] [cursor=pointer]
- button "12:15" [ref=e126] [cursor=pointer]
- button "12:30" [ref=e127] [cursor=pointer]
- button "12:45" [ref=e128] [cursor=pointer]
- generic [ref=e129]:
- heading "Confirm Booking" [level=3] [ref=e130]
- paragraph [ref=e131]:
- strong [ref=e132]: "Time:"
- text: 11:00 - 11:15
- generic [ref=e133]:
- generic [ref=e134]: Note (optional, max 144 chars)
- textbox "Add a note about your appointment..." [ref=e135]
- generic [ref=e136]: 0/144
- generic [ref=e137]:
- button "Book Appointment" [ref=e138] [cursor=pointer]
- button "Cancel" [ref=e139] [cursor=pointer]
- status [ref=e140]:
- generic [ref=e141]:
- img [ref=e143]
- generic [ref=e145]:
- text: Static route
- button "Hide static indicator" [ref=e146] [cursor=pointer]:
- img [ref=e147]
- alert [ref=e150]
```

View file

@ -0,0 +1,46 @@
# Page snapshot
```yaml
- generic [active] [ref=e1]:
- status [ref=e2]:
- generic [ref=e3]:
- img [ref=e5]
- generic [ref=e7]:
- text: Static route
- button "Hide static indicator" [ref=e8] [cursor=pointer]:
- img [ref=e9]
- alert [ref=e12]: ...
- main [ref=e13]:
- generic [ref=e14]:
- generic [ref=e15]:
- generic [ref=e16]: Counter
- generic [ref=e17]:
- text: •
- link "Sum" [ref=e18] [cursor=pointer]:
- /url: /sum
- generic [ref=e19]:
- text: •
- link "Book" [ref=e20] [cursor=pointer]:
- /url: /booking
- generic [ref=e21]:
- text: •
- link "Appointments" [ref=e22] [cursor=pointer]:
- /url: /appointments
- generic [ref=e23]:
- text: •
- link "My Invites" [ref=e24] [cursor=pointer]:
- /url: /invites
- generic [ref=e25]:
- text: •
- link "My Profile" [ref=e26] [cursor=pointer]:
- /url: /profile
- generic [ref=e27]:
- generic [ref=e28]: counter-1766272960115-d79hw5@example.com
- button "Sign out" [ref=e29] [cursor=pointer]
- generic [ref=e31]:
- generic [ref=e32]: Current Count
- heading "0" [level=1] [ref=e33]
- button "+ Increment" [ref=e34] [cursor=pointer]:
- generic [ref=e35]: +
- text: Increment
```