Skip to content

Commit ba991d2

Browse files
committed
fix: add item_id to dataLayer for bundles
1 parent 01fec85 commit ba991d2

2 files changed

Lines changed: 82 additions & 0 deletions

File tree

components/data/GTMProvider/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ export const GTMProvider: React.FC<GTMProviderProps> = ({
8888
orders: ["line_items"],
8989
line_items: [
9090
"sku_code",
91+
"bundle_code",
9192
"name",
9293
"total_amount_float",
9394
"currency_code",

specs/e2e/GTM.spec.ts

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ test.describe("multi shipments", () => {
3737
expect(dataLayer[0].ecommerce.currency).toBe("EUR")
3838
expect(dataLayer[0].ecommerce.value).toBe(244)
3939
expect(dataLayer[0].ecommerce.items?.length).toBe(2)
40+
expect(
41+
dataLayer[0].ecommerce.items?.filter(
42+
(item) => item?.item_id === "CANVASAU000000FFFFFF1824"
43+
)
44+
).toHaveLength(1)
4045

4146
await checkoutPage.checkStep("Shipping", "open")
4247
await checkoutPage.page.waitForTimeout(TIMEOUT)
@@ -362,3 +367,79 @@ test.describe("with digital products", () => {
362367
expect(dataLayer[0].ecommerce.tax).toBe(3.3)
363368
})
364369
})
370+
371+
test.describe("with bundle", () => {
372+
const customerEmail = faker.internet.email().toLocaleLowerCase()
373+
374+
test.use({
375+
defaultParams: {
376+
order: "with-items",
377+
orderAttributes: {
378+
customer_email: customerEmail,
379+
},
380+
organization: {
381+
gtm_id_test: "GTM-123456",
382+
},
383+
lineItemsAttributes: [{ bundle_code: "SHIRTSETSINGLE", quantity: 1 }],
384+
addresses: {
385+
billingAddress: euAddress,
386+
sameShippingAddress: true,
387+
},
388+
},
389+
})
390+
391+
test("check payment and purchase", async ({ checkoutPage }) => {
392+
await checkoutPage.checkOrderSummary("Order Summary")
393+
let dataLayer = await checkoutPage.getDataLayer("begin_checkout")
394+
expect(dataLayer.length).toBe(1)
395+
expect(dataLayer[0].ecommerce.currency).toBe("EUR")
396+
expect(dataLayer[0].ecommerce.value).toBe(105)
397+
expect(
398+
dataLayer[0].ecommerce.items?.filter(
399+
(item) => item?.item_id === "SHIRTSETSINGLE"
400+
)
401+
).toHaveLength(1)
402+
403+
expect(dataLayer[0].ecommerce.items?.length).toBe(1)
404+
405+
await checkoutPage.checkStep("Shipping", "open")
406+
407+
await checkoutPage.selectShippingMethod({ text: "Standard Shipping" })
408+
409+
await checkoutPage.save("Shipping")
410+
411+
dataLayer = await checkoutPage.getDataLayer("add_shipping_info")
412+
expect(dataLayer.length).toBe(1)
413+
expect(dataLayer[0].ecommerce.currency).toBe("EUR")
414+
expect(dataLayer[0].ecommerce.shipping_tier).toBe("Standard Shipping")
415+
expect(dataLayer[0].ecommerce.value).toBe(0)
416+
expect(dataLayer[0].ecommerce.items?.length).toBe(2)
417+
418+
await checkoutPage.selectPayment("stripe")
419+
420+
await checkoutPage.setPayment("stripe")
421+
422+
await checkoutPage.save("Payment")
423+
424+
dataLayer = await checkoutPage.getDataLayer("add_payment_info")
425+
expect(dataLayer.length).toBe(1)
426+
expect(dataLayer[0].ecommerce.currency).toBe("EUR")
427+
expect(dataLayer[0].ecommerce.payment_type).toBe("Stripe Payment")
428+
expect(dataLayer[0].ecommerce.value).toBe(10)
429+
expect(dataLayer[0].ecommerce.items?.length).toBe(1)
430+
431+
dataLayer = await checkoutPage.getDataLayer("purchase")
432+
expect(dataLayer.length).toBe(1)
433+
expect(dataLayer[0].ecommerce.currency).toBe("EUR")
434+
expect(dataLayer[0].ecommerce.value).toBe(115)
435+
expect(dataLayer[0].ecommerce.shipping).toBe(0)
436+
expect(dataLayer[0].ecommerce.tax).toBe(0)
437+
438+
const orderNumber = await checkoutPage.getOrderNumber()
439+
440+
expect(dataLayer[0].ecommerce.transaction_id).toBe(
441+
parseInt(orderNumber.replace("#", ""))
442+
)
443+
expect(dataLayer[0].ecommerce.items?.length).toBe(1)
444+
})
445+
})

0 commit comments

Comments
 (0)