UNPKG

dlest

Version:

Jest for your data layer - test runner for analytics tracking implementations

87 lines (71 loc) 2.87 kB
/** * Default test template for remote URL testing * * This test runs when you use: npx dlest https://example.com */ test.describe('Remote Analytics Testing', () => { test('page view tracking', async ({ page, dataLayer }) => { // Navigate to the remote URL (baseURL is set from CLI) await page.goto('/'); // Wait a bit for analytics to load await page.waitForTimeout(2000); // Check if any page view event was fired const events = await dataLayer.getEvents(); const pageViewEvents = events.filter(e => e.event === 'page_view' || e.event === 'pageview' || e.eventAction === 'page_view' || (e['0'] === 'event' && e['1'] === 'page_view') ); expect(pageViewEvents.length).toBeGreaterThan(0); if (pageViewEvents.length > 0) { console.log(`✅ Found ${pageViewEvents.length} page view event(s)`); } }); test('GTM/GA initialization', async ({ page, dataLayer }) => { await page.goto('/'); await page.waitForTimeout(2000); const events = await dataLayer.getEvents(); // Check for GTM events const gtmEvents = events.filter(e => e.event?.includes('gtm') || e['gtm.start'] ); // Check for GA config const gaConfig = events.filter(e => e['0'] === 'config' || e.event === 'config' ); const hasTracking = gtmEvents.length > 0 || gaConfig.length > 0 || events.length > 0; if (hasTracking) { console.log(`✅ Analytics tracking detected:`); console.log(` - Total events: ${events.length}`); console.log(` - GTM events: ${gtmEvents.length}`); console.log(` - GA configs: ${gaConfig.length}`); } else { console.log(`⚠️ No analytics tracking detected`); } expect(hasTracking).toBeTruthy(); }); test('data layer structure', async ({ page, dataLayer }) => { await page.goto('/'); await page.waitForTimeout(1000); // Check if dataLayer exists and is properly structured const dataLayerInfo = await page.evaluate(() => { return { exists: typeof window.dataLayer !== 'undefined', isArray: Array.isArray(window.dataLayer), length: window.dataLayer ? window.dataLayer.length : 0, hasGTM: typeof window.google_tag_manager !== 'undefined', hasGA: typeof window.gtag !== 'undefined' || typeof window.ga !== 'undefined' }; }); console.log(`📊 DataLayer analysis:`); console.log(` - DataLayer exists: ${dataLayerInfo.exists}`); console.log(` - Is array: ${dataLayerInfo.isArray}`); console.log(` - Events count: ${dataLayerInfo.length}`); console.log(` - GTM loaded: ${dataLayerInfo.hasGTM}`); console.log(` - GA loaded: ${dataLayerInfo.hasGA}`); expect(dataLayerInfo.exists).toBeTruthy(); }); });