github.com/web-platform-tests/wpt.fyi@v0.0.0-20240530210107-70cf978996f1/webdriver/webdriver.js (about)

     1  /**
     2   * Copyright 2019 The WPT Dashboard Project. All rights reserved.
     3   * Use of this source code is governed by a BSD-style license that can be
     4   * found in the LICENSE file.
     5   */
     6  
     7  const puppeteer = require('puppeteer');
     8  const log = require('debug')('wpt.fyi');
     9  
    10  const appserver = require('./appserver');
    11  const datastore = require('./datastore');
    12  const devData = require('./dev-data');
    13  
    14  /**
    15   * @fileoverview The full puppeteer webdriver test suite.
    16   */
    17  suite('Webdriver', function () {
    18  
    19    suiteSetup(async function() {
    20      this.timeout(90000);
    21  
    22      // TODO(Hexcles): Pick free ports.
    23      log('Launching Datastore emulator...');
    24      this.gcd = datastore.launch();
    25      await this.gcd.ready;
    26  
    27      log('Launching appserver...');
    28      this.server = appserver.launch({
    29        project: this.gcd.config.project,
    30        gcdPort: this.gcd.config.port,
    31      });
    32      await this.server.ready;
    33  
    34      log('Adding static data...');
    35      await devData.populate(this.server);
    36    });
    37  
    38    setup(async function() {
    39      this.browser = await puppeteer.launch({
    40        headless: process.env.HEADLESS !== 'false',
    41      });
    42    });
    43  
    44    require('./path-test').tests(this.ctx);
    45  
    46    teardown(async function () {
    47      await this.browser.close();
    48    });
    49  
    50    suiteTeardown(async function() {
    51      log('closing appserver...');
    52      await this.server.close();
    53      log('closing Datastore emulator...');
    54      await this.gcd.close();
    55      log('Bye!');
    56    });
    57  });