| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | set -e | 
					
						
							|  |  |  | set +x | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | trap "cd $(pwd -P)" EXIT | 
					
						
							|  |  |  | cd "$(dirname $0)" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rm -rf ./output | 
					
						
							|  |  |  | mkdir ./output | 
					
						
							|  |  |  | cd ./output | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-29 17:10:44 -07:00
										 |  |  | # cleanup environment | 
					
						
							|  |  |  | unset PLAYWRIGHT_DOWNLOAD_HOST | 
					
						
							|  |  |  | unset PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD | 
					
						
							| 
									
										
										
										
											2020-04-29 18:59:20 -07:00
										 |  |  | export PLAYWRIGHT_BROWSERS_PATH=0 | 
					
						
							| 
									
										
										
										
											2020-04-29 17:10:44 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-21 13:18:15 -07:00
										 |  |  | # Pack all packages and put them in our output folder. | 
					
						
							| 
									
										
										
										
											2021-02-12 11:12:06 -08:00
										 |  |  | echo "Building packages..." | 
					
						
							| 
									
										
										
										
											2020-05-21 13:18:15 -07:00
										 |  |  | PACKAGE_BUILDER="../../../packages/build_package.js" | 
					
						
							|  |  |  | PLAYWRIGHT_CORE_TGZ="$(node ${PACKAGE_BUILDER} playwright-core ./playwright-core.tgz)" | 
					
						
							| 
									
										
										
										
											2021-02-12 11:12:06 -08:00
										 |  |  | echo "playwright-core built" | 
					
						
							| 
									
										
										
										
											2020-05-21 13:18:15 -07:00
										 |  |  | PLAYWRIGHT_TGZ="$(node ${PACKAGE_BUILDER} playwright ./playwright.tgz)" | 
					
						
							| 
									
										
										
										
											2021-02-12 11:12:06 -08:00
										 |  |  | echo "playwright built" | 
					
						
							| 
									
										
										
										
											2020-05-21 13:18:15 -07:00
										 |  |  | PLAYWRIGHT_CHROMIUM_TGZ="$(node ${PACKAGE_BUILDER} playwright-chromium ./playwright-chromium.tgz)" | 
					
						
							| 
									
										
										
										
											2021-02-12 11:12:06 -08:00
										 |  |  | echo "playwright-chromium built" | 
					
						
							| 
									
										
										
										
											2020-05-21 13:18:15 -07:00
										 |  |  | PLAYWRIGHT_WEBKIT_TGZ="$(node ${PACKAGE_BUILDER} playwright-webkit ./playwright-webkit.tgz)" | 
					
						
							| 
									
										
										
										
											2021-02-12 11:12:06 -08:00
										 |  |  | echo "playwright-webkit built" | 
					
						
							| 
									
										
										
										
											2020-05-21 13:18:15 -07:00
										 |  |  | PLAYWRIGHT_FIREFOX_TGZ="$(node ${PACKAGE_BUILDER} playwright-firefox ./playwright-firefox.tgz)" | 
					
						
							| 
									
										
										
										
											2021-02-12 11:12:06 -08:00
										 |  |  | echo "playwright-firefox built" | 
					
						
							| 
									
										
										
										
											2021-06-03 08:07:55 -07:00
										 |  |  | PLAYWRIGHT_TEST_TGZ="$(node ${PACKAGE_BUILDER} playwright-test ./playwright-test.tgz)" | 
					
						
							|  |  |  | echo "playwright-test built" | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  | SCRIPTS_PATH="$(pwd -P)/.." | 
					
						
							| 
									
										
										
										
											2021-02-23 19:17:15 -08:00
										 |  |  | TEST_ROOT="/tmp/playwright-installation-tests" | 
					
						
							|  |  |  | rm -rf "${TEST_ROOT}" | 
					
						
							|  |  |  | mkdir -p "${TEST_ROOT}" | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  | NODE_VERSION="$(node --version)" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function copy_test_scripts { | 
					
						
							| 
									
										
										
										
											2021-04-16 15:19:44 -07:00
										 |  |  |   cp "${SCRIPTS_PATH}/inspector-custom-executable.js" . | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   cp "${SCRIPTS_PATH}/sanity.js" . | 
					
						
							| 
									
										
										
										
											2020-09-08 17:51:56 -07:00
										 |  |  |   cp "${SCRIPTS_PATH}/screencast.js" . | 
					
						
							| 
									
										
										
										
											2021-04-20 18:54:53 +02:00
										 |  |  |   cp "${SCRIPTS_PATH}/validate-dependencies.js" . | 
					
						
							|  |  |  |   cp "${SCRIPTS_PATH}/validate-dependencies-skip-executable-path.js" . | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   cp "${SCRIPTS_PATH}/esm.mjs" . | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   cp "${SCRIPTS_PATH}/esm-playwright.mjs" . | 
					
						
							|  |  |  |   cp "${SCRIPTS_PATH}/esm-playwright-chromium.mjs" . | 
					
						
							|  |  |  |   cp "${SCRIPTS_PATH}/esm-playwright-firefox.mjs" . | 
					
						
							|  |  |  |   cp "${SCRIPTS_PATH}/esm-playwright-webkit.mjs" . | 
					
						
							| 
									
										
										
										
											2021-06-03 08:07:55 -07:00
										 |  |  |   cp "${SCRIPTS_PATH}/esm-playwright-test.mjs" . | 
					
						
							| 
									
										
										
										
											2020-08-12 14:45:22 -07:00
										 |  |  |   cp "${SCRIPTS_PATH}/sanity-electron.js" . | 
					
						
							|  |  |  |   cp "${SCRIPTS_PATH}/electron-app.js" . | 
					
						
							| 
									
										
										
										
											2021-02-12 09:05:32 -08:00
										 |  |  |   cp "${SCRIPTS_PATH}/driver-client.js" . | 
					
						
							| 
									
										
										
										
											2021-06-03 08:07:55 -07:00
										 |  |  |   cp "${SCRIPTS_PATH}/sample.spec.js" . | 
					
						
							|  |  |  |   cp "${SCRIPTS_PATH}/read-json-report.js" . | 
					
						
							| 
									
										
										
										
											2021-07-16 21:15:03 -07:00
										 |  |  |   cp "${SCRIPTS_PATH}/playwright-test-types.ts" . | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | function run_tests { | 
					
						
							| 
									
										
										
										
											2021-06-03 08:07:55 -07:00
										 |  |  |   test_playwright_test_should_work | 
					
						
							| 
									
										
										
										
											2020-09-08 17:51:56 -07:00
										 |  |  |   test_screencast | 
					
						
							| 
									
										
										
										
											2020-05-26 17:19:05 -07:00
										 |  |  |   test_typescript_types | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  |   test_playwright_global_installation_subsequent_installs | 
					
						
							| 
									
										
										
										
											2021-02-12 11:12:06 -08:00
										 |  |  |   test_playwright_should_work_with_relative_home_path | 
					
						
							|  |  |  |   test_playwright_should_work_with_relative_browsers_path | 
					
						
							| 
									
										
										
										
											2021-04-20 18:54:53 +02:00
										 |  |  |   test_playwright_validate_dependencies | 
					
						
							|  |  |  |   test_playwright_validate_dependencies_skip_executable_path | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  |   test_playwright_global_installation | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   test_playwright_global_installation_cross_package | 
					
						
							| 
									
										
										
										
											2020-08-12 14:45:22 -07:00
										 |  |  |   test_playwright_electron_should_work | 
					
						
							| 
									
										
										
										
											2020-08-23 13:46:40 -07:00
										 |  |  |   test_electron_types | 
					
						
							| 
									
										
										
										
											2020-12-26 20:25:18 -08:00
										 |  |  |   test_android_types | 
					
						
							| 
									
										
										
										
											2020-12-28 14:50:12 -08:00
										 |  |  |   test_playwright_cli_screenshot_should_work | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |   test_playwright_cli_install_should_work | 
					
						
							| 
									
										
										
										
											2020-12-28 14:50:12 -08:00
										 |  |  |   test_playwright_cli_codegen_should_work | 
					
						
							| 
									
										
										
										
											2021-02-12 09:05:32 -08:00
										 |  |  |   test_playwright_driver_should_work | 
					
						
							| 
									
										
										
										
											2021-05-12 13:11:59 -07:00
										 |  |  |   # npm v7 that comes with Node v16 swallows output from install scripts, | 
					
						
							|  |  |  |   # so the following tests won't work. | 
					
						
							|  |  |  |   # See discussion at https://github.com/npm/cli/issues/1651 | 
					
						
							|  |  |  |   if [[ "${NODE_VERSION}" != *"v16."* ]]; then | 
					
						
							|  |  |  |     test_skip_browser_download | 
					
						
							|  |  |  |     test_skip_browser_download_inspect_with_custom_executable | 
					
						
							|  |  |  |     test_playwright_should_work | 
					
						
							|  |  |  |     test_playwright_chromium_should_work | 
					
						
							|  |  |  |     test_playwright_webkit_should_work | 
					
						
							|  |  |  |     test_playwright_firefox_should_work | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-08 17:51:56 -07:00
										 |  |  | function test_screencast { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  |   copy_test_scripts | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   local BROWSERS="$(pwd -P)/browsers" | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" npm install ${PLAYWRIGHT_FIREFOX_TGZ} | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" npm install ${PLAYWRIGHT_WEBKIT_TGZ} | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" npm install ${PLAYWRIGHT_CHROMIUM_TGZ} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |   echo "Running screencast.js" | 
					
						
							| 
									
										
										
										
											2020-09-08 17:51:56 -07:00
										 |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node screencast.js playwright | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node screencast.js playwright-chromium | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node screencast.js playwright-webkit | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node screencast.js playwright-firefox | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-09-08 17:51:56 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-26 17:19:05 -07:00
										 |  |  | function test_typescript_types { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							| 
									
										
										
										
											2021-07-16 21:15:03 -07:00
										 |  |  |   copy_test_scripts | 
					
						
							| 
									
										
										
										
											2020-05-26 17:19:05 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # install all packages. | 
					
						
							|  |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_CORE_TGZ} | 
					
						
							|  |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_FIREFOX_TGZ} | 
					
						
							|  |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_WEBKIT_TGZ} | 
					
						
							|  |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_CHROMIUM_TGZ} | 
					
						
							| 
									
										
										
										
											2021-07-16 21:15:03 -07:00
										 |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_TEST_TGZ} | 
					
						
							| 
									
										
										
										
											2020-05-26 17:19:05 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # typecheck all packages. | 
					
						
							|  |  |  |   for PKG_NAME in "playwright" \
 | 
					
						
							|  |  |  |                   "playwright-core" \
 | 
					
						
							|  |  |  |                   "playwright-firefox" \
 | 
					
						
							|  |  |  |                   "playwright-chromium" \
 | 
					
						
							|  |  |  |                   "playwright-webkit" | 
					
						
							|  |  |  |   do | 
					
						
							|  |  |  |     echo "Checking types of ${PKG_NAME}" | 
					
						
							| 
									
										
										
										
											2021-02-23 18:48:34 -08:00
										 |  |  |     echo "import { Page } from '${PKG_NAME}';" > "${PKG_NAME}.ts" && npx -p typescript@3.7.5 tsc "${PKG_NAME}.ts" | 
					
						
							| 
									
										
										
										
											2020-05-26 17:19:05 -07:00
										 |  |  |   done; | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-16 21:15:03 -07:00
										 |  |  |   echo "Checking types of @playwright/test" | 
					
						
							|  |  |  |   echo npx -p typescript@3.7.5 tsc "playwright-test-types.ts" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-05-26 17:19:05 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | function test_playwright_global_installation { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   local BROWSERS="$(pwd -P)/browsers" | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  |   if [[ ! -d "${BROWSERS}" ]]; then | 
					
						
							|  |  |  |     echo "Directory for shared browsers was not created!" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   copy_test_scripts | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "Running sanity.js" | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   node sanity.js playwright none | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node sanity.js playwright | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function test_playwright_global_installation_cross_package { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_FIREFOX_TGZ} | 
					
						
							|  |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_WEBKIT_TGZ} | 
					
						
							|  |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_CHROMIUM_TGZ} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   local BROWSERS="$(pwd -P)/browsers" | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  |   if [[ ! -d "${BROWSERS}" ]]; then | 
					
						
							|  |  |  |     echo "Directory for shared browsers was not created!" | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   copy_test_scripts | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |   echo "Running sanity.js" | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   # Every package should be able to launch. | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node sanity.js playwright-chromium all | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node sanity.js playwright-firefox all | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node sanity.js playwright-webkit all | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | # @see https://github.com/microsoft/playwright/issues/1651 | 
					
						
							|  |  |  | function test_playwright_global_installation_subsequent_installs { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   local BROWSERS="$(pwd -P)/browsers" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   mkdir install-1 && pushd install-1 && npm init -y | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  |   # Note: the `npm install` would not actually crash, the error | 
					
						
							|  |  |  |   # is merely logged to the console. To reproduce the error, we should make | 
					
						
							|  |  |  |   # sure that script's install.js can be run subsequently without unhandled promise rejections. | 
					
						
							|  |  |  |   # Note: the flag `--unahdnled-rejections=strict` will force node to terminate in case | 
					
						
							|  |  |  |   # of UnhandledPromiseRejection. | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node --unhandled-rejections=strict node_modules/playwright/install.js | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-21 16:47:16 -07:00
										 |  |  | function test_skip_browser_download { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   OUTPUT=$(PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_TGZ}) | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"Skipping browsers download because"* ]]; then | 
					
						
							|  |  |  |     echo "missing log message that browsers download is skipped" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if [[ -d ./node_modules/playwright/.local-browsers ]]; then | 
					
						
							|  |  |  |     echo "local browsers folder should be empty" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-04-21 16:47:16 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-16 15:19:44 -07:00
										 |  |  | function test_skip_browser_download_inspect_with_custom_executable { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  |   copy_test_scripts | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   OUTPUT=$(PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_TGZ}) | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"Skipping browsers download because"* ]]; then | 
					
						
							|  |  |  |     echo "missing log message that browsers download is skipped" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if [[ "$(uname)" != "Linux" ]]; then | 
					
						
							|  |  |  |     echo | 
					
						
							|  |  |  |     echo "Skipping test on non-Linux platform" | 
					
						
							|  |  |  |     echo | 
					
						
							|  |  |  |     return | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   OUTPUT=$(PWDEBUG=1 node inspector-custom-executable.js) | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"SUCCESS"* ]]; then | 
					
						
							|  |  |  |     echo "missing log message that launch succeeded: ${OUTPUT}" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | function test_playwright_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   OUTPUT=$(npm install ${PLAYWRIGHT_TGZ}) | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"chromium"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should download chromium" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"firefox"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should download firefox" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"webkit"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should download webkit" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   copy_test_scripts | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "Running sanity.js" | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   node sanity.js playwright | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   if [[ "${NODE_VERSION}" == *"v14."* ]]; then | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |     echo "Running esm.js" | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |     node esm-playwright.mjs | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 08:07:55 -07:00
										 |  |  |   echo "Running playwright test" | 
					
						
							|  |  |  |   if npx playwright test -c .; then | 
					
						
							|  |  |  |     echo "ERROR: should not be able to run tests with just playwright package" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-12 11:12:06 -08:00
										 |  |  | function test_playwright_should_work_with_relative_home_path { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="" HOME=. npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  |   copy_test_scripts | 
					
						
							|  |  |  |   echo "Running sanity.js" | 
					
						
							|  |  |  |   # Firefox does not work with relative HOME. | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="" HOME=. node sanity.js playwright chromium webkit | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function test_playwright_should_work_with_relative_browsers_path { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Make sure that browsers path is resolved relative to the `npm install` call location. | 
					
						
							|  |  |  |   mkdir foo | 
					
						
							|  |  |  |   cd foo | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="../relative" npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  |   cd .. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   copy_test_scripts | 
					
						
							|  |  |  |   echo "Running sanity.js" | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="./relative" node sanity.js playwright | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | function test_playwright_chromium_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   OUTPUT=$(npm install ${PLAYWRIGHT_CHROMIUM_TGZ}) | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"chromium"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should download chromium" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" == *"firefox"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should not download firefox" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" == *"webkit"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should not download webkit" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   copy_test_scripts | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "Running sanity.js" | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   node sanity.js playwright-chromium | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   if [[ "${NODE_VERSION}" == *"v14."* ]]; then | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |     echo "Running esm.js" | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |     node esm-playwright-chromium.mjs | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function test_playwright_webkit_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   OUTPUT=$(npm install ${PLAYWRIGHT_WEBKIT_TGZ}) | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" == *"chromium"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should not download chromium" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" == *"firefox"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should not download firefox" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"webkit"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should download webkit" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   copy_test_scripts | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "Running sanity.js" | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   node sanity.js playwright-webkit | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   if [[ "${NODE_VERSION}" == *"v14."* ]]; then | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |     echo "Running esm.js" | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |     node esm-playwright-webkit.mjs | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function test_playwright_firefox_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   OUTPUT=$(npm install ${PLAYWRIGHT_FIREFOX_TGZ}) | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" == *"chromium"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should not download chromium" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"firefox"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should download firefox" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" == *"webkit"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should not download webkit" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   copy_test_scripts | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "Running sanity.js" | 
					
						
							| 
									
										
										
										
											2020-07-24 16:36:00 -07:00
										 |  |  |   node sanity.js playwright-firefox | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |   if [[ "${NODE_VERSION}" == *"v14."* ]]; then | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |     echo "Running esm.js" | 
					
						
							| 
									
										
										
										
											2020-07-23 15:14:36 -07:00
										 |  |  |     node esm-playwright-firefox.mjs | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-20 18:54:53 +02:00
										 |  |  | function test_playwright_validate_dependencies { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  |   copy_test_scripts | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   OUTPUT="$(node validate-dependencies.js)" | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: validateDependencies was not called" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function test_playwright_validate_dependencies_skip_executable_path { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  |   copy_test_scripts | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   OUTPUT="$(node validate-dependencies-skip-executable-path.js)" | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" == *"PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: validateDependencies was called" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-12 14:45:22 -07:00
										 |  |  | function test_playwright_electron_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-01 15:53:47 -07:00
										 |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_TGZ} | 
					
						
							| 
									
										
										
										
											2020-08-12 14:45:22 -07:00
										 |  |  |   npm install electron@9.0 | 
					
						
							|  |  |  |   copy_test_scripts | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "Running sanity-electron.js" | 
					
						
							| 
									
										
										
										
											2020-08-12 14:45:22 -07:00
										 |  |  |   xvfb-run --auto-servernum -- bash -c "node sanity-electron.js" | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-08-12 14:45:22 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-23 13:46:40 -07:00
										 |  |  | function test_electron_types { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							| 
									
										
										
										
											2021-06-01 15:53:47 -07:00
										 |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_TGZ} | 
					
						
							| 
									
										
										
										
											2020-08-23 13:46:40 -07:00
										 |  |  |   npm install electron@9.0 | 
					
						
							|  |  |  |   npm install -D typescript@3.8 | 
					
						
							|  |  |  |   npm install -D @types/node@10.17 | 
					
						
							| 
									
										
										
										
											2021-06-01 15:53:47 -07:00
										 |  |  |   echo "import { Page, _electron, ElectronApplication, Electron } from 'playwright';" > "test.ts" | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "Running tsc" | 
					
						
							| 
									
										
										
										
											2021-02-23 18:48:34 -08:00
										 |  |  |   npx -p typescript@3.7.5 tsc "test.ts" | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-26 20:25:18 -08:00
										 |  |  | function test_android_types { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-01 15:53:47 -07:00
										 |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_TGZ} | 
					
						
							| 
									
										
										
										
											2020-12-26 20:25:18 -08:00
										 |  |  |   npm install -D typescript@3.8 | 
					
						
							|  |  |  |   npm install -D @types/node@10.17 | 
					
						
							| 
									
										
										
										
											2021-06-01 15:53:47 -07:00
										 |  |  |   echo "import { AndroidDevice, _android, AndroidWebView, Page } from 'playwright';" > "test.ts" | 
					
						
							| 
									
										
										
										
											2020-12-26 20:25:18 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "Running tsc" | 
					
						
							| 
									
										
										
										
											2021-02-23 18:48:34 -08:00
										 |  |  |   npx -p typescript@3.7.5 tsc "test.ts" | 
					
						
							| 
									
										
										
										
											2020-12-26 20:25:18 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-28 14:50:12 -08:00
										 |  |  | function test_playwright_cli_screenshot_should_work { | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "Running playwright screenshot" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   node_modules/.bin/playwright screenshot about:blank one.png | 
					
						
							|  |  |  |   if [[ ! -f one.png ]]; then | 
					
						
							|  |  |  |     echo 'node_modules/.bin/playwright does not work' | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   npx playwright screenshot about:blank two.png | 
					
						
							|  |  |  |   if [[ ! -f two.png ]]; then | 
					
						
							|  |  |  |     echo 'npx playwright does not work' | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function test_playwright_cli_install_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   local BROWSERS="$(pwd -P)/browsers" | 
					
						
							| 
									
										
										
										
											2021-01-08 15:42:08 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   echo "Running playwright install chromium" | 
					
						
							|  |  |  |   OUTPUT=$(PLAYWRIGHT_BROWSERS_PATH=${BROWSERS} npx playwright install chromium) | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"chromium"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should download chromium" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2021-03-10 14:01:35 -08:00
										 |  |  |   if [[ "${OUTPUT}" != *"ffmpeg"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should download ffmpeg" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2021-01-08 15:42:08 -08:00
										 |  |  |   if [[ "${OUTPUT}" == *"webkit"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should not download webkit" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" == *"firefox"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should not download firefox" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |   echo "Running playwright install" | 
					
						
							| 
									
										
										
										
											2021-01-08 15:42:08 -08:00
										 |  |  |   OUTPUT=$(PLAYWRIGHT_BROWSERS_PATH=${BROWSERS} npx playwright install) | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" == *"chromium"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should not download chromium" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2021-03-10 14:01:35 -08:00
										 |  |  |   if [[ "${OUTPUT}" == *"ffmpeg"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should not download ffmpeg" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2021-01-08 15:42:08 -08:00
										 |  |  |   if [[ "${OUTPUT}" != *"webkit"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should download webkit" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"firefox"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: should download firefox" | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-08 15:42:08 -08:00
										 |  |  |   copy_test_scripts | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |   echo "Running sanity.js" | 
					
						
							|  |  |  |   node sanity.js playwright none | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node sanity.js playwright | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							| 
									
										
										
										
											2020-08-23 13:46:40 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-28 14:50:12 -08:00
										 |  |  | function test_playwright_cli_codegen_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "Running playwright codegen" | 
					
						
							| 
									
										
										
										
											2021-04-09 07:59:09 -07:00
										 |  |  |   OUTPUT=$(PWTEST_CLI_EXIT=1 xvfb-run --auto-servernum -- bash -c "npx playwright codegen") | 
					
						
							| 
									
										
										
										
											2021-06-11 04:56:41 -07:00
										 |  |  |   if [[ "${OUTPUT}" != *"@playwright/test"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: missing @playwright/test in the output" | 
					
						
							| 
									
										
										
										
											2020-12-28 14:50:12 -08:00
										 |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2021-06-11 04:56:41 -07:00
										 |  |  |   if [[ "${OUTPUT}" != *"page.close"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: missing page.close in the output" | 
					
						
							| 
									
										
										
										
											2020-12-28 14:50:12 -08:00
										 |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "Running playwright codegen --target=python" | 
					
						
							| 
									
										
										
										
											2021-04-09 07:59:09 -07:00
										 |  |  |   OUTPUT=$(PWTEST_CLI_EXIT=1 xvfb-run --auto-servernum -- bash -c "npx playwright codegen --target=python") | 
					
						
							| 
									
										
										
										
											2020-12-28 14:50:12 -08:00
										 |  |  |   if [[ "${OUTPUT}" != *"chromium.launch"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: missing chromium.launch in the output" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   if [[ "${OUTPUT}" != *"browser.close"* ]]; then | 
					
						
							|  |  |  |     echo "ERROR: missing browser.close in the output" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-02-12 09:05:32 -08:00
										 |  |  | function test_playwright_driver_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "Running playwright install" | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="0" npx playwright install | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   copy_test_scripts | 
					
						
							|  |  |  |   echo "Running driver-client.js" | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="0" node driver-client.js | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-03 08:07:55 -07:00
										 |  |  | function test_playwright_test_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   npm install ${PLAYWRIGHT_TEST_TGZ} | 
					
						
							|  |  |  |   copy_test_scripts | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "Running playwright test without install" | 
					
						
							|  |  |  |   if npx playwright test -c .; then | 
					
						
							|  |  |  |     echo "ERROR: should not be able to run tests without installing browsers" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "Running playwright install" | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="0" npx playwright install | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "Running playwright test" | 
					
						
							|  |  |  |   PLAYWRIGHT_JSON_OUTPUT_NAME=report.json PLAYWRIGHT_BROWSERS_PATH="0" npx playwright test -c . --browser=all --reporter=list,json | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "Checking the report" | 
					
						
							|  |  |  |   node ./read-json-report.js ./report.json | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "Running sanity.js" | 
					
						
							|  |  |  |   node sanity.js "@playwright/test" | 
					
						
							|  |  |  |   if [[ "${NODE_VERSION}" == *"v14."* ]]; then | 
					
						
							|  |  |  |     echo "Running esm.js" | 
					
						
							|  |  |  |     node esm-playwright-test.mjs | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "${FUNCNAME[0]} success" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | function initialize_test { | 
					
						
							|  |  |  |   cd ${TEST_ROOT} | 
					
						
							|  |  |  |   local TEST_NAME="./$1" | 
					
						
							|  |  |  |   echo "=====================================================================================" | 
					
						
							|  |  |  |   echo "=====================================================================================" | 
					
						
							|  |  |  |   echo | 
					
						
							|  |  |  |   echo "  RUNNING TEST:  ${TEST_NAME}" | 
					
						
							|  |  |  |   echo | 
					
						
							|  |  |  |   echo "=====================================================================================" | 
					
						
							|  |  |  |   echo "=====================================================================================" | 
					
						
							| 
									
										
										
										
											2020-12-22 14:54:13 -08:00
										 |  |  |   mkdir ${TEST_NAME} && cd ${TEST_NAME} && npm init -y | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Run all tests | 
					
						
							|  |  |  | # Script will terminate if there's some error somewhere. | 
					
						
							|  |  |  | run_tests | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo | 
					
						
							|  |  |  | echo "SUCCESS!" |