async stop()

in src/plugins/tracing.ts [78:104]


  async stop() {
    const events = [];
    const collectListener = payload => events.push(...payload.value);
    const { client } = this.driver;
    client.on('Tracing.dataCollected', collectListener);

    const [traceEvents] = await Promise.all([
      new Promise(resolve =>
        client.once('Tracing.tracingComplete', () => {
          client.off('Tracing.dataCollected', collectListener);
          resolve(events);
        })
      ),
      client.send('Tracing.end'),
    ]);
    const output: Partial<PluginOutput> = {};
    if (this.options.filmstrips) {
      output.filmstrips = Filmstrips.compute(traceEvents as Array<TraceEvent>);
    }
    if (this.options.trace) {
      Object.assign(output, {
        ...TraceProcessor.computeTrace(traceEvents as Array<TraceEvent>),
      });
    }
    log(`Plugins: stopped collecting trace events`);
    return output;
  }