Skip to content
This repository has been archived by the owner on Jun 2, 2022. It is now read-only.

Commit

Permalink
Fix cypress tests
Browse files Browse the repository at this point in the history
  • Loading branch information
igorbrasileiro committed Dec 28, 2021
1 parent f1b4a55 commit 75e9b0c
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 10 deletions.
24 changes: 14 additions & 10 deletions cypress/integration/analytics.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ const { pages } = cypress

const dataLayerHasEvent = (eventName) => {
return cy.window().then((window) => {
const allEvents = window.dataLayer.map((evt) => evt.name)
const allEvents = window.dataLayer.map((evt) => evt.event)

expect(allEvents).to.include(eventName)
})
}

const eventDataHasCurrencyProperty = () => {
return cy.window().then((window) => {
const allEvents = window.dataLayer.map((evt) => evt.params || {})
const allEvents = window.dataLayer.map((evt) => evt.ecommerce || {})

allEvents.forEach((event) => {
if (event.value !== undefined) {
Expand All @@ -39,12 +39,12 @@ describe('add_to_cart event', () => {
cy.window().then((window) => {
const { dataLayer } = window

const event = dataLayer.find((e) => e.name === 'add_to_cart')
const event = dataLayer.find((e) => e.event === 'add_to_cart')

expect(event).to.not.be.null
expect(event.params).to.have.property('value')
expect(event.ecommerce).to.have.property('value')

const item = event.params.items.find((i) => i.item_variant === skuId)
const item = event.ecommerce.items.find((i) => i.item_variant === skuId)

expect(item).to.not.be.null
expect(item).to.have.property('currency')
Expand Down Expand Up @@ -95,12 +95,12 @@ describe('remove_from_cart event', () => {
cy.window().then((window) => {
const { dataLayer } = window

const event = dataLayer.find((e) => e.name === 'remove_from_cart')
const event = dataLayer.find((e) => e.event === 'remove_from_cart')

expect(event).to.not.be.null
expect(event.params).to.have.property('value')
expect(event.ecommerce).to.have.property('value')

const item = event.params.items.find((i) => i.item_variant === skuId)
const item = event.ecommerce.items.find((i) => i.item_variant === skuId)

expect(item).to.not.be.null
expect(item).to.have.property('currency')
Expand All @@ -109,6 +109,10 @@ describe('remove_from_cart event', () => {
}

context('when removing a product from cart', () => {
beforeEach(() => {
cy.getById('remove-from-cart-button').click()
})

it('adds remove_from_cart event in the data layer', () => {
cy.visit(pages.pdp, options)
cy.waitForHydration()
Expand Down Expand Up @@ -167,11 +171,11 @@ describe('select_item event', () => {
.then(() => {
cy.window().then((window) => {
const event = window.dataLayer.find(
({ name }) => name === 'select_item'
({ event: eventName }) => eventName === 'select_item'
)

expect(event).to.exist
expect(skuId).to.equal(event.params.items[0].item_id)
expect(skuId).to.equal(event.ecommerce.items[0].item_id)
})
})
})
Expand Down
4 changes: 4 additions & 0 deletions src/sdk/analytics/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import { useAnalyticsEvent } from '@faststore/sdk'
import type { PropsWithChildren } from 'react'

if (typeof window !== 'undefined') {
window.dataLayer = window.dataLayer ?? []
}

export const AnalyticsHandler = ({ children }: PropsWithChildren<unknown>) => {
useAnalyticsEvent((event) => {
window.dataLayer.push({ event: event.name, ecommerce: event.params })
Expand Down

0 comments on commit 75e9b0c

Please sign in to comment.