@@ -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