static initialize()

in x-test.js [422:468]


  static initialize(context, href) {
    const url = new URL(href);
    if (!url.searchParams.get('x-test-no-reporter')) {
      context.state.reporter = new XTestReporter();
      document.body.append(context.state.reporter);
    }
    context.state.coverage = url.searchParams.get('x-test-run-coverage') === '';
    context.state.coverageValuePromise = new Promise(resolve => {
      context.state.resolveCoverageValuePromise = value => {
        context.state.coverageValue = value;
        resolve(context.state.coverageValue);
      };
    });
    const versionStepId = context.uuid();
    const exitStepId = context.uuid();
    context.state.stepIds.push(versionStepId, exitStepId);
    context.state.steps[versionStepId] = { stepId: versionStepId, type: 'version', status: 'waiting' };
    context.state.steps[exitStepId] = { stepId: exitStepId, type: 'exit', status: 'waiting' };
    context.subscribe(event => {
      switch (event.data.type) {
        case 'x-test-client-ping':
          XTestRoot.onPing(context, event);
          break;
        case 'x-test-client-coverage-result':
          XTestRoot.onCoverageResult(context, event);
          break;
        case 'x-test-suite-register':
          XTestRoot.onRegister(context, event);
          break;
        case 'x-test-suite-ready':
          XTestRoot.onReady(context, event);
          break;
        case 'x-test-suite-result':
          XTestRoot.onResult(context, event);
          break;
        case 'x-test-suite-bail':
          XTestRoot.onBail(context, event);
          break;
      }
      XTestRoot.check(context);
    });

    // Run own tests in iframe.
    url.searchParams.delete('x-test-no-reporter');
    url.searchParams.delete('x-test-run-coverage');
    context.publish('x-test-suite-register', { type: 'test', testId: context.uuid(), href: url.href });
  }