mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-09-28 13:13:37 +08:00
The shared test runner logic was reimplementing parts of Mocha, in particular the test logging and filtering. Moreover, it was booting the hosted mode server and puppeteer outside of Mocha. Mocha supports root level hooks [1]. These hooks allow us to perform work before a test starts. Moreover, by using the before and after hook, we can run logic before and after all tests. By using these hooks, we can extract the "boot the hosted mode server and hookup puppeteer" part to these root hooks. Additionally, we can reset the pages in the `beforeEach`, which means that tests themselves don't have to reset the pages. We also put the implementation code into third_party/conductor, as we would like to reuse this logic for the Puppeteer tests. The Puppeteer test suite now also uses Mocha and has very similar requirements as to our DevTools tests. By extracting from DevTools, we can look into expanding the test runner to other usecases, but that is out of scope for now. [1]: https://mochajs.org/#root-level-hooks Bug: 1071369 Change-Id: Ie9f954359d9de84da564b74b6f5517dd535db008 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2150458 Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org> Reviewed-by: Paul Lewis <aerotwist@chromium.org>
122 lines
3.6 KiB
Python
122 lines
3.6 KiB
Python
# Copyright 2019 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
"""
|
|
Helper to find the path to the correct third_party directory
|
|
"""
|
|
|
|
from os import path
|
|
import sys
|
|
import platform
|
|
|
|
|
|
# Find the root path of the checkout.
|
|
# In the Chromium repository, this is the src/chromium directory.
|
|
# In the external repository, standalone build, this is the devtools-frontend directory.
|
|
# In the external repository, integrated build, this is the src/chromium directory.
|
|
def root_path():
|
|
SCRIPTS_PATH = path.dirname(path.abspath(__file__))
|
|
ABS_DEVTOOLS_PATH = path.dirname(SCRIPTS_PATH)
|
|
PARENT_PATH = path.dirname(ABS_DEVTOOLS_PATH)
|
|
# TODO(1011259): remove Chromium repository handling
|
|
if path.basename(PARENT_PATH) == 'renderer':
|
|
# Chromium repository
|
|
return path.dirname(path.dirname(path.dirname(PARENT_PATH)))
|
|
elif path.basename(PARENT_PATH) == 'devtools-frontend':
|
|
# External repository, integrated build
|
|
return path.dirname(path.dirname(PARENT_PATH))
|
|
else:
|
|
# External repository, standalone build
|
|
return ABS_DEVTOOLS_PATH
|
|
|
|
|
|
# This is the third_party path relative to the root of the checkout.
|
|
def third_party_path():
|
|
return path.join(root_path(), 'third_party')
|
|
|
|
|
|
# This points to the node binary downloaded as part of the checkout.
|
|
def node_path():
|
|
try:
|
|
old_sys_path = sys.path[:]
|
|
sys.path.append(path.join(third_party_path(), 'node'))
|
|
import node
|
|
finally:
|
|
sys.path = old_sys_path
|
|
return node.GetBinaryPath()
|
|
|
|
|
|
def devtools_root_path():
|
|
return path.dirname((path.dirname(path.abspath(__file__))))
|
|
|
|
|
|
def node_modules_path():
|
|
return path.join(devtools_root_path(), 'node_modules')
|
|
|
|
|
|
def eslint_path():
|
|
return path.join(node_modules_path(), 'eslint', 'bin', 'eslint.js')
|
|
|
|
|
|
def mocha_path():
|
|
return path.join(node_modules_path(), 'mocha', 'bin', 'mocha')
|
|
|
|
|
|
def check_localizable_resources_path():
|
|
return path.join(devtools_root_path(), 'scripts', 'localization', 'check_localizable_resources.js')
|
|
|
|
|
|
def check_localized_strings_path():
|
|
return path.join(devtools_root_path(), 'scripts', 'localization', 'check_localizability.js')
|
|
|
|
|
|
def karma_path():
|
|
return path.join(node_modules_path(), 'karma', 'bin', 'karma')
|
|
|
|
|
|
def typescript_compiler_path():
|
|
return path.join(node_modules_path(), 'typescript', 'bin', 'tsc')
|
|
|
|
|
|
def boot_perf_test_path():
|
|
return path.join(devtools_root_path(), 'test', 'perf', 'bootperf.js')
|
|
|
|
|
|
def hosted_mode_script_path():
|
|
return path.join(devtools_root_path(), 'scripts', 'hosted_mode', 'server.js')
|
|
|
|
|
|
def downloaded_chrome_binary_path():
|
|
return path.abspath(path.join(
|
|
*{
|
|
'Linux': (devtools_root_path(), 'third_party', 'chrome', 'chrome-linux', 'chrome'),
|
|
'Darwin': (devtools_root_path(), 'third_party', 'chrome', 'chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium'),
|
|
'Windows': (devtools_root_path(), 'third_party', 'chrome', 'chrome-win', 'chrome.exe'),
|
|
}[platform.system()]))
|
|
|
|
|
|
def license_checker_path():
|
|
return path.join(node_modules_path(), 'license-checker', 'bin', 'license-checker')
|
|
|
|
|
|
def rollup_path():
|
|
return path.join(
|
|
node_modules_path(),
|
|
'rollup',
|
|
'dist',
|
|
'bin',
|
|
'rollup',
|
|
)
|
|
|
|
|
|
def package_lock_json_path():
|
|
return path.join(devtools_root_path(), 'package-lock.json')
|
|
|
|
|
|
def package_json_path():
|
|
return path.join(devtools_root_path(), 'package.json')
|
|
|
|
|
|
def browser_protocol_path():
|
|
return path.join(third_party_path(), 'blink', 'public', 'devtools_protocol', 'browser_protocol.pdl')
|