import puppeteer from 'puppeteer'; import { setAgeGateCookies, bypassAgeGate, hasAgeGate } from './src/utils/age-gate'; const TEST_URL = 'https://dutchie.com/dispensary/sol-flower-dispensary'; async function testSolFlowerAgeGate() { console.log('\n๐Ÿงช Testing Sol Flower Dispensary Age Gate\n'); console.log(`URL: ${TEST_URL}\n`); const browser = await puppeteer.launch({ headless: true, // Run in headless mode args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-blink-features=AutomationControlled', '--disable-features=IsolateOrigins,site-per-process', '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' ] }); try { const page = await browser.newPage(); // Set viewport await page.setViewport({ width: 1280, height: 720 }); console.log('๐Ÿ“ Step 1: Setting age gate cookies...'); await setAgeGateCookies(page, TEST_URL, 'Arizona'); console.log('๐Ÿ“ Step 2: Navigating to page...'); await page.goto(TEST_URL, { waitUntil: 'domcontentloaded', timeout: 60000 }); await page.waitForTimeout(3000); const currentUrl = page.url(); console.log(`Current URL: ${currentUrl}`); console.log('\n๐Ÿ“ Step 3: Checking for age gate...'); const hasGate = await hasAgeGate(page); if (hasGate) { console.log('โœ… Age gate detected!'); // Take screenshot before bypass await page.screenshot({ path: '/tmp/sol-flower-before-bypass.png' }); console.log('๐Ÿ“ธ Screenshot saved: /tmp/sol-flower-before-bypass.png'); // Get page HTML to analyze structure const bodyHTML = await page.evaluate(() => document.body.innerHTML); console.log('\n๐Ÿ” Page HTML (first 1000 chars):'); console.log(bodyHTML.substring(0, 1000)); console.log('\n๐Ÿ“ Step 4: Attempting to bypass age gate...'); const bypassed = await bypassAgeGate(page, 'Arizona'); if (bypassed) { console.log('โœ… Age gate bypass succeeded!'); // Take screenshot after bypass await page.screenshot({ path: '/tmp/sol-flower-after-bypass.png' }); console.log('๐Ÿ“ธ Screenshot saved: /tmp/sol-flower-after-bypass.png'); const finalUrl = page.url(); console.log(`Final URL: ${finalUrl}`); // Check if we can see products await page.waitForTimeout(3000); const hasProducts = await page.evaluate(() => { const bodyText = document.body.textContent || ''; return bodyText.includes('Add to cart') || bodyText.includes('products') || bodyText.includes('shop'); }); console.log(`Can see products: ${hasProducts ? 'โœ…' : 'โŒ'}`); } else { console.log('โŒ Age gate bypass failed'); // Take screenshot after failed bypass await page.screenshot({ path: '/tmp/sol-flower-failed-bypass.png' }); console.log('๐Ÿ“ธ Screenshot saved: /tmp/sol-flower-failed-bypass.png'); } } else { console.log('โ„น๏ธ No age gate detected - cookies may have worked!'); // Take screenshot await page.screenshot({ path: '/tmp/sol-flower-no-gate.png' }); console.log('๐Ÿ“ธ Screenshot saved: /tmp/sol-flower-no-gate.png'); // Check if we can see products const hasProducts = await page.evaluate(() => { const bodyText = document.body.textContent || ''; return bodyText.includes('Add to cart') || bodyText.includes('products') || bodyText.includes('shop'); }); console.log(`Can see products: ${hasProducts ? 'โœ…' : 'โŒ'}`); } // Don't pause in headless mode } catch (error) { console.error('โŒ Error:', error); } finally { await browser.close(); console.log('\nโœ… Test completed'); } } testSolFlowerAgeGate();