21. Strategies
1
Stub Requests Control the network
- cy.server()
- cy.route()
- Set status codes
- Set response bodies
- Test edge cases (empty views / 500)
Fast, Easy, Flexible
No Server / DB
Not True E2E
Requires Fixtures
22. Strategies
1
Stub Requests
Fast, Easy, Flexible
No Server / DB
Not True E2E
Requires Fixtures
2
Static User
Shared User + Credentials
- OAuth Login (Github / Google)
- Pre-seeded Databases
- joe@example.com / joe
23. Strategies
1
Stub Requests
Fast, Easy, Flexible
No Server / DB
Not True E2E
Requires Fixtures
2
Static User
Real Session E2E
Shares Test State
Seed the DB
Requires Server
24. Strategies
1
Stub Requests
Fast, Easy, Flexible
No Server / DB
Not True E2E
Requires Fixtures
2
Static User
Real Session E2E
Shares Test State
Seed the DB
Requires Server
3
Dynamic User
New User for each Test
- Modify DB within Tests
- Query DB within Tests
25. Strategies
1
Stub Requests
Fast, Easy, Flexible
No Server / DB
Not True E2E
Requires Fixtures
2
Static User
Real Session E2E
Shares Test State
Seed the DB
Requires Server
3
Dynamic User
No State Mutations
Slow / Complex
DB Setup / Teardown
Flexible / Powerful
51. 1. onFormSubmit
2. Reads form values
3. POST /api/users/login
4. Success: Save Token
5. On load, check for token
52.
53.
54.
55.
56. Best Practices
Don’t use the UI to build up state
Set state directly / programmatically
Don’t use page objects to share UI knowledge
Write specs in isolation, avoid coupling
Don’t limit yourself trying to act like a user
You have native access to everything