Skip to content

WIP: Cypress debugging v2

Eric Eastwood requested to merge 2269-cypress-debugging-v2 into develop

Cypress debugging v2

Continuing https://gitlab.com/gitlab-org/gitter/webapp/merge_requests/1619

Failing tests

can send message -> https://gitlab.com/gitlab-org/gitter/webapp/merge_requests/1657

Moved to https://gitlab.com/gitlab-org/gitter/webapp/merge_requests/1657

#chat-input-textarea isn't available because it thinks the user is roomMember: false (comes from the window.troupeContext).

I suspect there is some race condition on the backend even though we generate all the fixtures and room membership on the backend beforehand. Maybe some caching :/

It seems like we are suffering from https://github.com/cypress-io/cypress/issues/781

The problem is that the current test is using the user from the previous test. We login for each test but somehow the session/cookies/something is being shared across occasionally even though Cypress says they are cleared,

Cypress automatically clears all cookies before each new test starts by default

https://docs.cypress.io/api/cypress-api/cookies.html#Preserve-Once


You can tell this is happening if you add this to a test after the cy.visit(...)

cy.window()
  .its('troupeContext.user.id')
  .should('equal', fixtures.user1._id);

Here is a failing CI run after we added this check: https://gitlab.com/gitlab-org/gitter/webapp/-/jobs/354681264


Logs

It should be signing in as user1(id=5dd3adc97f6d2f4ecc5589fa) but it is instead using some user from the previous tests.

Server logs
2019-11-19T08:54:33.542Z - info: Fixture endpoint generated some new fixtures
{ user1:
   { __v: 0,
     displayName: 'Test 170 1574153622798',
     githubId: 1574153622969,
     githubToken: null,
     username: '_testuser_1721574153622798',
     staff: false,
     _id: '5dd3adc97f6d2f4ecc5589fa',
     _tv: 1,
     identities: '',
     emails: '',
     accessToken: '_test_bcb5e0e8_5700_4871_9133_53141b44e20d' },
  user2:
   { __v: 0,
     displayName: 'Test 173 1574153622798',
     githubId: 1574153622972,
     githubToken: null,
     username: '_testuser_1751574153622798',
     staff: false,
     _id: '5dd3adc97f6d2f4ecc5589fb',
     _tv: 1,
     identities: '',
     emails: '',
     accessToken: '_test_58eb420f_e095_480a_8554_a376278a8508' },
  group1:
   { __v: 0,
     name: '_group1-1801574153673528',
     uri: '_group1-1801574153673528',
     lcUri: '_group1-1801574153673528',
     avatarUrl: null,
     homeUri: '_group1-1801574153673528',
     lcHomeUri: '_group1-1801574153673528',
     _id: '5dd3adc97f6d2f4ecc558a02',
     avatarVersion: 0 },
  troupe1:
   { __v: 0,
     uri: '_test_1811574153622798',
     githubType: 'ORG',
     _id: '5dd3adc97f6d2f4ecc558a04',
     _tv: 1,
     providers: '',
     renamedLcUris: '',
     githubId: null,
     noindex: false,
     bans: '',
     userCount: 2,
     oneToOneUsers: '',
     oneToOne: false,
     status: 'ACTIVE',
     lcOwner: null,
     lcUri: '_test_1811574153622798',
     tags: '',
     topic: '' },
  troupeInGroup1:
   { __v: 0,
     uri: '_test_1821574153622798',
     groupId: '5dd3adc97f6d2f4ecc558a02',
     githubType: 'ORG',
     _id: '5dd3adc97f6d2f4ecc558a06',
     _tv: 1,
     providers: '',
     renamedLcUris: '',
     githubId: null,
     noindex: false,
     bans: '',
     userCount: 2,
     oneToOneUsers: '',
     oneToOne: false,
     status: 'ACTIVE',
     lcOwner: null,
     lcUri: '_test_1821574153622798',
     tags: '',
     topic: '' },
  message1:
   { __v: 0,
     fromUserId: '5dd3adc97f6d2f4ecc5589fa',
     toTroupeId: '5dd3adc97f6d2f4ecc558a04',
     text: 'hello from the parent',
     pub: false,
     _id: '5dd3adc97f6d2f4ecc558a08',
     _tv: 1,
     readBy: '',
     editedAt: null,
     sent: 'Tue Nov 19 2019 02:54:33 GMT-0600 (Central Standard Time)',
     issues: '',
     mentions: '',
     urls: '' },
  message2:
   { __v: 0,
     fromUserId: '5dd3adc97f6d2f4ecc5589fa',
     toTroupeId: '5dd3adc97f6d2f4ecc558a04',
     parentId: '5dd3adc97f6d2f4ecc558a08',
     text: 'hello from the child',
     pub: false,
     _id: '5dd3adc97f6d2f4ecc558a09',
     _tv: 1,
     readBy: '',
     editedAt: null,
     sent: 'Tue Nov 19 2019 02:54:33 GMT-0600 (Central Standard Time)',
     issues: '',
     mentions: '',
     urls: '' },
  userToBeTokenDeleted1:
   { __v: 0,
     displayName: 'Test 176 1574153622798',
     githubId: 1574153622975,
     githubToken: null,
     username: '_testuser_1781574153622798',
     staff: false,
     _id: '5dd3adc97f6d2f4ecc5589fc',
     _tv: 1,
     identities: '',
     emails: '',
     accessToken: '_test_6cc6a4ac_608a_4348_9f2e_efd384798605' },
  oAuthClientToBeDeleted1:
   { __v: 0,
     name: 'Test 179 1574153622798',
     clientKey: 'ecf72cf2a728ad6ac28de5168e83d765578b8390',
     clientSecret: 'e321da3093f94c87385da19decdbc23c07173ab5',
     revoked: false,
     ownerUserId: '5dd3adc97f6d2f4ecc5589fc',
     _id: '5dd3adc97f6d2f4ecc558a00' },
  oAuthAccessTokenToBeDeleted1:
   { __v: 0,
     token: '86588ca8566178e2104c35970ddbc4a12818cab8',
     userId: '5dd3adc97f6d2f4ecc5589fc',
     clientId: '5dd3adc97f6d2f4ecc558a00',
     _id: '5dd3adc97f6d2f4ecc558a01' } }
  gitter:app:room-context-service findRoomContext user=_testuser_1721574153622798(5dd3adc97f6d2f4ecc5589fa) uri=_test_1821574153622798 options=undefined +428ms
  gitter:app:uri-resolver uriResolver _test_1821574153622798 +2ms
  gitter:app:room-membership-service checkRoomMembership(troupeId=5dd3adc97f6d2f4ecc558a06 userId=5dd3adc97f6d2f4ecc5589fa) -> 1 ||| allUsersInRoom=5dd3adc97f6d2f4ecc5589fa,5dd3adc97f6d2f4ecc5589fb +8ms
  gitter:app:troupe-service findByIdLeanWithMembership found {"_id":"5dd3adc97f6d2f4ecc558a06","uri":"_test_1821574153622798","groupId":"5dd3adc97f6d2f4ecc558a02","githubType":"ORG","sd":{"type":null,"members":"PUBLIC","admins":"MANUAL","public":true,"_id":"5dd3adc97f6d2f4ecc558a07","extraAdmins":[],"extraMembers":[]},"_tv":1,"providers":[],"renamedLcUris":[],"githubId":null,"noindex":false,"bans":[],"userCount":2,"oneToOneUsers":[],"oneToOne":false,"status":"ACTIVE","lcOwner":null,"lcUri":"_test_1821574153622798","tags":[],"topic":"","__v":0,"id":"5dd3adc97f6d2f4ecc558a06"} roomMember=true +2ms
  gitter:app:uri-resolver _test_1821574153622798 resolved to {"user":null,"uri":"_test_1821574153622798","room":{"_id":"5dd3adc97f6d2f4ecc558a06","uri":"_test_1821574153622798","groupId":"5dd3adc97f6d2f4ecc558a02","githubType":"ORG","sd":{"type":null,"members":"PUBLIC","admins":"MANUAL","public":true,"_id":"5dd3adc97f6d2f4ecc558a07","extraAdmins":[],"extraMembers":[]},"_tv":1,"providers":[],"renamedLcUris":[],"githubId":null,"noindex":false,"bans":[],"userCount":2,"oneToOneUsers":[],"oneToOne":false,"status":"ACTIVE","lcOwner":null,"lcUri":"_test_1821574153622798","tags":[],"topic":"","__v":0,"id":"5dd3adc97f6d2f4ecc558a06"},"roomMember":true,"group":null} +2ms
  gitter:app:context-generator generateTroupeContext -> roomMember=true troupe=_test_1821574153622798(5dd3adc97f6d2f4ecc558a06) user=_testuser_1721574153622798(5dd3adc97f6d2f4ecc5589fa) +7ms
  gitter:app:room-membership-service checkRoomMembership(troupeId=5dd3adc97f6d2f4ecc558a06 userId=5dd3adc97f6d2f4ecc5589fa) -> 1 ||| allUsersInRoom=5dd3adc97f6d2f4ecc5589fa,5dd3adc97f6d2f4ecc5589fb +9ms
  gitter:app:room-membership-service findRoomIdsForUser(5dd3adc97f6d2f4ecc5589fa) +4ms
  gitter:app:context-generator generateTroupeContext -> roomMember=true troupe=_test_1821574153622798(5dd3adc97f6d2f4ecc558a06) user=_testuser_1721574153622798(5dd3adc97f6d2f4ecc5589fa) +1ms
  gitter:app:room-membership-service checkRoomMembership(troupeId=5dd3adc97f6d2f4ecc558a06 userId=5dd3adc97f6d2f4ecc5589fa) -> 1 ||| allUsersInRoom=5dd3adc97f6d2f4ecc5589fa,5dd3adc97f6d2f4ecc5589fb +10ms
2019-11-19T08:54:33.876Z - warn: eyeball: socket of175v7ka1cvbgrgs7c8r3idsvvdapj does not exist.
  gitter:app:room-context-service findRoomContext user=_testuser_1591574153622798(5dd3adc87f6d2f4ecc5589dd) uri=_test_1811574153622798 options=undefined +135ms
  gitter:app:uri-resolver uriResolver _test_1811574153622798 +2ms
  gitter:app:room-membership-service checkRoomMembership(troupeId=5dd3adc97f6d2f4ecc558a04 userId=5dd3adc87f6d2f4ecc5589dd) -> 0 ||| allUsersInRoom=5dd3adc97f6d2f4ecc5589fa,5dd3adc97f6d2f4ecc5589fb +12ms
  gitter:app:troupe-service findByIdLeanWithMembership found {"_id":"5dd3adc97f6d2f4ecc558a04","uri":"_test_1811574153622798","githubType":"ORG","sd":{"type":null,"members":"PUBLIC","admins":"MANUAL","public":true,"_id":"5dd3adc97f6d2f4ecc558a05","extraAdmins":["5dd3adc97f6d2f4ecc5589fa"],"extraMembers":[]},"_tv":1,"providers":[],"renamedLcUris":[],"githubId":null,"noindex":false,"bans":[],"userCount":2,"oneToOneUsers":[],"oneToOne":false,"status":"ACTIVE","lcOwner":null,"lcUri":"_test_1811574153622798","tags":[],"topic":"","__v":0,"id":"5dd3adc97f6d2f4ecc558a04"} roomMember=false +2ms
  gitter:app:uri-resolver _test_1811574153622798 resolved to {"user":null,"uri":"_test_1811574153622798","room":{"_id":"5dd3adc97f6d2f4ecc558a04","uri":"_test_1811574153622798","githubType":"ORG","sd":{"type":null,"members":"PUBLIC","admins":"MANUAL","public":true,"_id":"5dd3adc97f6d2f4ecc558a05","extraAdmins":["5dd3adc97f6d2f4ecc5589fa"],"extraMembers":[]},"_tv":1,"providers":[],"renamedLcUris":[],"githubId":null,"noindex":false,"bans":[],"userCount":2,"oneToOneUsers":[],"oneToOne":false,"status":"ACTIVE","lcOwner":null,"lcUri":"_test_1811574153622798","tags":[],"topic":"","__v":0,"id":"5dd3adc97f6d2f4ecc558a04"},"roomMember":false,"group":null} +2ms
  gitter:app:context-generator generateTroupeContext -> roomMember=false troupe=_test_1811574153622798(5dd3adc97f6d2f4ecc558a04) user=_testuser_1591574153622798(5dd3adc87f6d2f4ecc5589dd) +9ms
  gitter:app:room-membership-service checkRoomMembership(troupeId=5dd3adc97f6d2f4ecc558a04 userId=5dd3adc87f6d2f4ecc5589dd) -> 0 ||| allUsersInRoom=5dd3adc97f6d2f4ecc5589fa,5dd3adc97f6d2f4ecc5589fb +10ms
  gitter:app:room-membership-service findRoomIdsForUser(5dd3adc87f6d2f4ecc5589dd) +10ms
  gitter:app:context-generator generateTroupeContext -> roomMember=false troupe=_test_1811574153622798(5dd3adc97f6d2f4ecc558a04) user=_testuser_1591574153622798(5dd3adc87f6d2f4ecc5589dd) +1ms
  gitter:app:room-membership-service checkRoomMembership(troupeId=5dd3adc97f6d2f4ecc558a04 userId=5dd3adc87f6d2f4ecc5589dd) -> 0 ||| allUsersInRoom=5dd3adc97f6d2f4ecc5589fa,5dd3adc97f6d2f4ecc5589fb +11ms
  gitter:app:room-membership-service checkRoomMembership(troupeId=5dd3adc97f6d2f4ecc558a04 userId=5dd3adc87f6d2f4ecc5589dd) -> 0 ||| allUsersInRoom=5dd3adc97f6d2f4ecc5589fa,5dd3adc97f6d2f4ecc5589fb +354ms
  gitter:app:room-membership-service findRoomIdsForUser(5dd3adc87f6d2f4ecc5589dd) +317ms
Browser log
app:client-context window.troupeContext 
troupe:
associatedRepo: false
avatarUrl: "http://localhost:5000/api/private/avatars/gh/u/_test_1811574153622798"
backend: {type: null}
githubType: "ORG"
id: "5dd3adc97f6d2f4ecc558a04"
lurk: false
mentions: 0
meta: {}
name: "_test_1811574153622798"
noindex: false
oneToOne: false
permissions: {admin: false}
public: true
roomMember: false
security: "PUBLIC"
topic: ""
unreadItems: 0
uri: "_test_1811574153622798"
url: "/_test_1811574153622798"
userCount: 2
v: 1

user:
avatarUrl: "http://localhost:5000/api/private/avatars/g/u/_testuser_1591574153622798"
avatarUrlMedium: "/api/private/user-avatar/_testuser_1591574153622798?s=128"
avatarUrlSmall: "/api/private/user-avatar/_testuser_1591574153622798?s=60"
displayName: "Test 157 1574153622798"
id: "5dd3adc87f6d2f4ecc5589dd"
providers: ["github"]
staff: false
url: "/_testuser_1591574153622798"
username: "_testuser_1591574153622798"
v: 1


app:router-chat Rendering app with troupe +162ms {id: "5dd3adc97f6d2f4ecc558a04", name: "_test_1811574153622798", topic: "", avatarUrl: "http://localhost:5000/api/private/avatars/gh/u/_test_1811574153622798", uri: "_test_1811574153622798", …}
console.js:35 app:chat-toolbar-input Not a room member so showing join room button +51ms
console.js:35 app:client-context Troupe data contains no group: {"id":"5dd3adc97f6d2f4ecc558a04","name":"_test_1811574153622798","topic":"","avatarUrl":"http://localhost:5000/api/private/avatars/gh/u/_test_1811574153622798","uri":"_test_1811574153622798","oneToOne":false,"userCount":2,"unreadItems":0,"mentions":0,"lastAccessTime":"2019-11-19T08:54:34.258Z","lurk":false,"url":"/_test_1811574153622798","githubType":"ORG","associatedRepo":false,"security":"PUBLIC","noindex":false,"permissions":{"admin":false},"roomMember":false,"backend":{"type":null},"public":true,"meta":{},"v":1}

can create a room -> https://gitlab.com/gitlab-org/gitter/webapp/merge_requests/1656

Moved to https://gitlab.com/gitlab-org/gitter/webapp/merge_requests/1656

After figuring out the cookie issue (see above), running the full test suite in CI would still have can create a room fail. The test would pass if you ran it by itself it.only(...)

The debug video would also freeze and jump straight to the failure so we couldn't see what was going on. So I just updated the e2e-tests CI job to use our more powerful Gitter internal runners.

The video just confirmed that the group select dropdown wasn't popping up after trying to click it.

Locally I couldn't get the test to fail to debug this better.

But I first tried a better selector(.js-create-room-group-input .js-group-select-view) that includes the nested backbone view in it to make sure the groupSelectView was rendered at the time we tried to click.

Then I updated the groupSelect to not close the typeahead dropdown when we select the initial groupId. My theory was that we clicked the input to open the typeahead dropdown but our selectInitialGroup was closing it before we could find the dropdown and click on an item.

Dev notes

Frontend:

window.localStorage.debug = 'app:client-context,app:router-chat,app:chat-toolbar-input';
window.localStorage.debug = 'app:create-rooom-view,app:group-select-view';

Backend:

set DEBUG=gitter:app:room-context-service,gitter:app:context-generator,gitter:app:uri-resolver,gitter:app:troupe-service,gitter:app:room-membership-service

https://docs.cypress.io/api/commands/window.html#Examples

cy.window()
  .its('troupeContext.user.id')
  .should('equal', fixtures.user1._id);

Closes #2269 (closed)

Edited by Eric Eastwood

Merge request reports