← back to Wine Finder

test-parallel-both.js

132 lines

const { chromium: playwrightChromium } = require('playwright');
const puppeteer = require('puppeteer');

async function testWithPlaywright() {
  console.log('🎭 PLAYWRIGHT TEST STARTING...');
  const browser = await playwrightChromium.launch({ headless: true });
  const context = await browser.newContext({ viewport: { width: 1920, height: 1080 } });
  const page = await context.newPage();

  const startTime = Date.now();

  try {
    await page.goto('http://45.61.58.125:9222/verify.html', { waitUntil: 'networkidle' });
    console.log('✓ Playwright: Page loaded');

    await page.screenshot({ path: '/tmp/playwright-test.png', fullPage: true });
    console.log('✓ Playwright: Screenshot saved');

    await page.fill('#mainSearchInput', 'Merlot');
    await page.click('#searchButtonGiant');
    console.log('✓ Playwright: Search executed');

    await page.waitForTimeout(8000);

    const searchResults = await page.locator('#searchResults.show').count();
    console.log('✓ Playwright: Search results - ' + (searchResults > 0 ? 'Visible' : 'Hidden'));

    await page.screenshot({ path: '/tmp/playwright-results.png', fullPage: true });

    const endTime = Date.now();
    console.log('✓ Playwright: Total time - ' + ((endTime - startTime) / 1000) + 's');

    await browser.close();
    return { success: true, framework: 'Playwright', time: endTime - startTime };

  } catch (error) {
    console.error('✗ Playwright error:', error.message);
    await browser.close();
    return { success: false, framework: 'Playwright', error: error.message };
  }
}

async function testWithPuppeteer() {
  console.log('🎪 PUPPETEER TEST STARTING...');
  const browser = await puppeteer.launch({
    headless: true,
    args: ['--no-sandbox', '--disable-setuid-sandbox']
  });
  const page = await browser.newPage();
  await page.setViewport({ width: 1920, height: 1080 });

  const startTime = Date.now();

  try {
    await page.goto('http://45.61.58.125:9222/verify.html', { waitUntil: 'networkidle2' });
    console.log('✓ Puppeteer: Page loaded');

    await page.screenshot({ path: '/tmp/puppeteer-test.png', fullPage: true });
    console.log('✓ Puppeteer: Screenshot saved');

    await page.type('#mainSearchInput', 'Cabernet');
    await page.click('#searchButtonGiant');
    console.log('✓ Puppeteer: Search executed');

    await new Promise(resolve => setTimeout(resolve, 8000));

    const searchResults = await page.$('#searchResults.show');
    console.log('✓ Puppeteer: Search results - ' + (searchResults ? 'Visible' : 'Hidden'));

    await page.screenshot({ path: '/tmp/puppeteer-results.png', fullPage: true });

    const endTime = Date.now();
    console.log('✓ Puppeteer: Total time - ' + ((endTime - startTime) / 1000) + 's');

    await browser.close();
    return { success: true, framework: 'Puppeteer', time: endTime - startTime };

  } catch (error) {
    console.error('✗ Puppeteer error:', error.message);
    await browser.close();
    return { success: false, framework: 'Puppeteer', error: error.message };
  }
}

(async () => {
  console.log('');
  console.log('=== PARALLEL TESTING: Playwright + Puppeteer ===');
  console.log('');
  console.log('Starting both frameworks simultaneously...');
  console.log('');

  const startTime = Date.now();

  // Run both tests in parallel
  const results = await Promise.all([
    testWithPlaywright(),
    testWithPuppeteer()
  ]);

  const totalTime = Date.now() - startTime;

  console.log('');
  console.log('=== PARALLEL TEST RESULTS ===');
  console.log('');

  results.forEach(result => {
    if (result.success) {
      console.log('✅ ' + result.framework + ': SUCCESS (' + (result.time / 1000) + 's)');
    } else {
      console.log('❌ ' + result.framework + ': FAILED - ' + result.error);
    }
  });

  console.log('');
  console.log('Total parallel execution time: ' + (totalTime / 1000) + 's');
  console.log('');
  console.log('📸 Screenshots saved:');
  console.log('  - /tmp/playwright-test.png (initial)');
  console.log('  - /tmp/playwright-results.png (search: Merlot)');
  console.log('  - /tmp/puppeteer-test.png (initial)');
  console.log('  - /tmp/puppeteer-results.png (search: Cabernet)');
  console.log('');

  const allPassed = results.every(r => r.success);
  if (allPassed) {
    console.log('🎉 ALL PARALLEL TESTS PASSED!');
  } else {
    console.log('⚠️  Some tests failed');
  }
  console.log('');
})();