ThinkDeepTech/thinkdeep

View on GitHub
packages/tools/web-test-runner.config.js

Summary

Maintainability
A
0 mins
Test Coverage
import {playwrightLauncher} from '@web/test-runner-playwright';
import rollupGraphQL from '@rollup/plugin-graphql';
import rollupInjectEnv from 'rollup-plugin-inject-process-env';
import {fromRollup} from '@web/dev-server-rollup';

import getPort from 'get-port';

const graphql = fromRollup(rollupGraphQL);
const injectEnv = fromRollup(rollupInjectEnv);

const setBrowserContext = ({browser}) =>
  browser.newContext({
    viewport: {width: 1800, height: 1000},
    browser: {width: 1800, height: 1000},
    recordVideo: {dir: './video'},
    ignoreHTTPSErrors: true,
  });

const browsers = {
  chromium: playwrightLauncher({
    product: 'chromium',
    createBrowserContext: setBrowserContext,
    createPage: ({context}) => context.newPage(),
    launchOptions: {
      headless: true,
      devtools: true,
      args: ['--incognito'],
    },
  }),
  firefox: playwrightLauncher({
    product: 'firefox',
    createBrowserContext: setBrowserContext,
    createPage: ({context}) => context.newPage(),
    launchOptions: {
      headless: true,
    },
  }),
};

// Get a random port number.
const port = await getPort();

export default {
  // files: ['test/**/*.test.js'],
  nodeResolve: true,
  coverage: true,
  coverageConfig: {
    report: true,
    reportDir: 'coverage',
    reporters: ['json'],
    exclude: ['**/node_modules/**', '**/charts/**'],
  },
  browsers: Object.values(browsers),
  preserveSymlinks: true,
  concurrency: 1,
  browserStartTimeout: 60000,
  testsStartTimeout: 60000,
  testsFinishTimeout: 240000,
  testFramework: {
    config: {
      ui: 'bdd',
      timeout: 30000,
    },
  },
  port,
  mimeTypes: {
    '**/*.graphql': 'js',
  },
  plugins: [
    graphql(),
    injectEnv({
      PREDECOS_AUTH_DOMAIN: process.env.PREDECOS_TEST_AUTH_DOMAIN,
      PREDECOS_AUTH_CLIENT_ID: process.env.PREDECOS_TEST_AUTH_CLIENT_ID,
      PREDECOS_AUTH_AUDIENCE: process.env.PREDECOS_TEST_AUTH_AUDIENCE,
      PREDECOS_MICROSERVICE_GATEWAY_URL:
        process.env.PREDECOS_TEST_MICROSERVICE_GATEWAY_URL,
      PREDECOS_MICROSERVICE_SUBSCRIPTION_URL:
        process.env.PREDECOS_TEST_MICROSERVICE_SUBSCRIPTION_URL,

      // Testing-specific values
      PREDECOS_TEST_AUTH_PREMIUM_USERNAME:
        process.env.PREDECOS_TEST_AUTH_PREMIUM_USERNAME,
      PREDECOS_TEST_AUTH_PREMIUM_PASSWORD:
        process.env.PREDECOS_TEST_AUTH_PREMIUM_PASSWORD,
      PREDECOS_TEST_AUTH_STANDARD_USERNAME:
        process.env.PREDECOS_TEST_AUTH_STANDARD_USERNAME,
      PREDECOS_TEST_AUTH_STANDARD_PASSWORD:
        process.env.PREDECOS_TEST_AUTH_STANDARD_PASSWORD,

      PREDECOS_TEST_AUTH_SCOPE: process.env.PREDECOS_TEST_AUTH_SCOPE,
      PREDECOS_TEST_AUTH_CLIENT_SECRET:
        process.env.PREDECOS_TEST_AUTH_CLIENT_SECRET,
      PREDECOS_TEST_AUTH_LOGIN_URL: `https://${process.env.PREDECOS_TEST_AUTH_DOMAIN}/oauth/token`,
      NODE_ENV: process.env.NODE_ENV,
    }),
  ],
};