chromium/tools/perf/page_sets/wasmpspdfkit_pages.py

# Copyright 2021 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from telemetry import story

from page_sets import press_story


class WasmPsPdfKitStory(press_story.PressStory):
  URL = 'https://pspdfkit.com/webassembly-benchmark/'

  def ExecuteTest(self, action_runner):
    action_runner.WaitForElement(text='All done!', timeout_in_seconds=480)

  def ParseTestResults(self, action_runner):
    self.AddJavaScriptMeasurement(
        'Total', 'ms', """
        parseInt(document.querySelector(
          '#root > div > div:nth-child(10) > div.Result >' +
          'div.Result-score > div > div.Score-value'
        ).textContent)
        """)
    self.AddJavaScriptMeasurement(
        'Rendering', 'ms', """
        let text =
        document.querySelector(
        '#Test-Rendering > details > summary > div.Bench-heading > span'
        ).textContent;
        let value = text.substring(0, text.length - 3);
        parseInt(value)
        """)

    self.AddJavaScriptMeasurement(
        'Searching', 'ms', """
        text =
        document.querySelector(
        '#Test-Searching > details > summary > div.Bench-heading > span'
        ).textContent;
        value = text.substring(0, text.length - 3);
        parseInt(value)
        """)

    self.AddJavaScriptMeasurement(
        'Exporting', 'ms', """
        text =
        document.querySelector(
        '#Test-Exporting > details > summary > div.Bench-heading > span'
        ).textContent;
        value = text.substring(0, text.length - 3);
        parseInt(value)
        """)

    self.AddJavaScriptMeasurement(
        'Annotations', 'ms', """
        text =
        document.querySelector(
        '#Test-Annotations > details > summary > div.Bench-heading > span'
        ).textContent;
        value = text.substring(0, text.length - 3);
        parseInt(value)
        """)

    self.AddJavaScriptMeasurement(
        'Initialization', 'ms', """
        text =
        document.querySelector(
        '#Test-Initialization > details > summary > div.Bench-heading > span'
        ).textContent;
        value = text.substring(0, text.length - 3);
        parseInt(value)
        """)


class WasmPsPdfKitStorySet(story.StorySet):
  def __init__(self):
    super(WasmPsPdfKitStorySet,
          self).__init__(archive_data_file='data/WasmPsPdfKit.json',
                         cloud_storage_bucket=story.PUBLIC_BUCKET)

    self.AddStory(WasmPsPdfKitStory(self))