async getArtifact(context) {
    const executionContext = context.driver.executionContext;
    const session = context.driver.defaultSession;
    this._session = session;

    session.on('CSS.styleSheetAdded', this._onStylesheetAdded);

    await session.sendCommand('DOM.enable');
    await session.sendCommand('CSS.enable');

    // Force style to recompute.
    // Doesn't appear to be necessary in newer versions of Chrome.
    await executionContext.evaluate(() => window.getComputedStyle(document.body), {
      args: [],
    });

    session.off('CSS.styleSheetAdded', this._onStylesheetAdded);

    // Ensure we finish fetching all stylesheet contents before disabling the CSS domain
    const sheets = await Promise.all(this._sheetPromises.values());

    await session.sendCommand('CSS.disable');
    await session.sendCommand('DOM.disable');

    /** @type {Map<string, LH.Artifacts.CSSStyleSheetInfo>} */
    const dedupedStylesheets = new Map();

    for (const sheet of sheets) {
      // Erroneous sheets will be reported via sentry and the log.
      // We can ignore them here without throwing a fatal error.
      if (!sheet) continue;

      // Exclude empty stylesheets.
      if (sheet.header.length === 0) {
        continue;
      }

      dedupedStylesheets.set(sheet.content, sheet);
    }

    return Array.from(dedupedStylesheets.values());
  }
@param {LH.Gatherer.Context} context
@return {Promise<LH.Artifacts['Stylesheets']>}