Skip to content

Commit

Permalink
feat: Test that 'survey sent' Event is Triggered when Submitting Non-…
Browse files Browse the repository at this point in the history
…Empty Unsubscribe Survey (#18805)

* test that 'survey sent' event was triggered

* remove unneeded config changes

* update env vars, update test to check event payload

* make capture url slightly stricter

---------

Co-authored-by: Bianca Yang <[email protected]>
  • Loading branch information
xrdt and Bianca Yang authored Dec 5, 2023
1 parent 14d3db3 commit 70b04a8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .github/workflows/ci-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ jobs:
DISABLE_SECURE_SSL_REDIRECT=1
SECURE_COOKIES=0
OPT_OUT_CAPTURE=0
SELF_CAPTURE=0
SELF_CAPTURE=1
E2E_TESTING=1
SKIP_SERVICE_VERSION_REQUIREMENTS=1
EMAIL_HOST=email.test.posthog.net
Expand Down
19 changes: 19 additions & 0 deletions cypress/e2e/billingv2.cy.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
import * as fflate from 'fflate'

const UNSUBSCRIBE_SURVEY_ID = '018b6e13-590c-0000-decb-c727a2b3f462'

describe('Billing', () => {
beforeEach(() => {
cy.intercept('/api/billing-v2/', { fixture: 'api/billing-v2/billing-v2.json' })

cy.visit('/organization/billing')

cy.intercept('POST', '**/e/?compression=gzip-js*').as('capture')
})

it('Show and submit unsubscribe survey', () => {
Expand All @@ -19,6 +25,19 @@ describe('Billing', () => {
cy.get('[data-attr=unsubscribe-reason-survey-textarea]').type('Product analytics')
cy.contains('.LemonModal .LemonButton', 'Unsubscribe').click()

cy.wait('@capture').then(({ request }) => {
const data = new Uint8Array(request.body)
const decoded = fflate.strFromU8(fflate.decompressSync(data))
const decodedJSON = JSON.parse(decoded)

// These should be a 'survey sent' event somewhere in the decodedJSON
const matchingEvents = decodedJSON.filter((event) => event.event === 'survey sent')
expect(matchingEvents.length).to.equal(1)
const matchingEvent = matchingEvents[0]
expect(matchingEvent.properties.$survey_id).to.equal(UNSUBSCRIBE_SURVEY_ID)
expect(matchingEvent.properties.$survey_response).to.equal('Product analytics')
expect(matchingEvent.properties.$survey_response_1).to.equal('product_analytics')
})
cy.get('.LemonModal').should('not.exist')
cy.wait(['@unsubscribeProductAnalytics'])
})
Expand Down

0 comments on commit 70b04a8

Please sign in to comment.