// Test: checkout eService — selektor BLIK/Karta, polskie etykiety, submit flow const puppeteer = require('C:/xampp/htdocs/vilmax/vilmax-cockpit/node_modules/puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: 'new', args: ['--ignore-certificate-errors'] }); const page = await browser.newPage(); await page.setViewport({ width: 1440, height: 1400 }); const errs = [], failed = []; page.on('pageerror', e => errs.push('PAGEERROR: ' + e.message.slice(0, 160))); page.on('console', m => { if (m.type() === 'error') errs.push('CONSOLE: ' + m.text().slice(0, 140)); }); await page.goto('https://bazarowy-swiat.pl/?add-to-cart=7892&variation_id=7892&attribute_pa_strona=lewy&attribute_pa_kod-odcienia=39&quantity=1', { waitUntil: 'networkidle2', timeout: 90000 }); await page.goto('https://bazarowy-swiat.pl/zamowienie/', { waitUntil: 'networkidle2', timeout: 90000 }); await new Promise(r => setTimeout(r, 9000)); await page.evaluate(() => { const rb = document.getElementById('payment_method_globalpayments_gpapi'); if (rb && !rb.checked) rb.click(); }); await new Promise(r => setTimeout(r, 5000)); const report = await page.evaluate(() => { const q = s => document.querySelector(s); const vis = el => el && el.offsetParent !== null; return { hasSelectorUI: !!q('.bs-pay-methods'), blikTileActive: (q('.bs-pay-opt[data-pay=blik]') || {}).className, cardFieldsetVisible: vis(q('#wc-globalpayments_gpapi-cc-form')), gpSubmitVisible: vis(q('#globalpayments_gpapi-card-submit')), placeOrderVisible: vis(q('#place_order')), blikSubmitVisible: vis(q('.bs-pay-blik-submit')), blikHiddenInput: !!(q('form[name=checkout] input[name=blik-payment]') || q('input[name=blik-payment]')), holderLabel: (q('label[for=globalpayments_gpapi-card-holder-name]') || { innerText: 'MISSING' }).innerText.trim(), gatewayTitle: (q('label[for=payment_method_globalpayments_gpapi]') || { innerText: 'MISSING' }).innerText.trim(), footerPay: !!q('.bs-footer-pay'), footerBadges: [...document.querySelectorAll('.bs-pay-badge')].map(b => b.innerText.trim()), bodyClass: document.body.className.includes('bs-pay-blik') ? 'bs-pay-blik ON' : 'OFF', }; }); console.log('=== BLIK (default) ==='); console.log(JSON.stringify(report, null, 1)); await page.screenshot({ path: 'chk_blik_default.png' }); // przełącz na kartę await page.evaluate(() => document.querySelector('.bs-pay-opt[data-pay=card]').click()); await new Promise(r => setTimeout(r, 1500)); const card = await page.evaluate(() => { const q = s => document.querySelector(s); const vis = el => el && el.offsetParent !== null; return { cardFieldsetVisible: vis(q('#wc-globalpayments_gpapi-cc-form')), blikHiddenInput: !!q('input[name=blik-payment]'), blikSubmitVisible: vis(q('.bs-pay-blik-submit')), holderLabel: (q('label[for=globalpayments_gpapi-card-holder-name]') || { innerText: 'MISSING' }).innerText.trim(), holderValidation: (q('.card-holder-name .woocommerce-globalpayments-validation-error li') || { innerText: 'MISSING' }).innerText.trim(), numLabel: (q('label[for=globalpayments_gpapi-card-number]') || { innerText: 'M' }).innerText.trim(), bodyClass: document.body.className.includes('bs-pay-blik') ? 'bs-pay-blik ON' : 'OFF', }; }); console.log('=== CARD selected ==='); console.log(JSON.stringify(card, null, 1)); // przewiń do pól karty i screenshot await page.evaluate(() => document.querySelector('#wc-globalpayments_gpapi-cc-form').scrollIntoView({ block: 'center' })); await new Promise(r => setTimeout(r, 800)); await page.screenshot({ path: 'chk_card_selected.png' }); // z powrotem na BLIK await page.evaluate(() => document.querySelector('.bs-pay-opt[data-pay=blik]').click()); await new Promise(r => setTimeout(r, 1000)); const back = await page.evaluate(() => ({ blikHiddenInput: !!document.querySelector('input[name=blik-payment]'), fieldsetHidden: document.querySelector('#wc-globalpayments_gpapi-cc-form').offsetParent === null, bodyClass: document.body.className.includes('bs-pay-blik'), })); console.log('=== back to BLIK ==='); console.log(JSON.stringify(back)); // stopka await page.evaluate(() => document.querySelector('.bs-footer-pay').scrollIntoView({ block: 'center' })); await new Promise(r => setTimeout(r, 600)); await page.screenshot({ path: 'chk_footer_pay.png' }); console.log('ERRS:', JSON.stringify([...new Set(errs)].slice(0, 15), null, 1)); await browser.close(); })().catch(e => console.error('ERR', e.message));