| 
									
										
										
										
											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. | 
					
						
							|  |  |  | PACKAGE_BUILDER="../../../packages/build_package.js" | 
					
						
							|  |  |  | PLAYWRIGHT_CORE_TGZ="$(node ${PACKAGE_BUILDER} playwright-core ./playwright-core.tgz)" | 
					
						
							|  |  |  | PLAYWRIGHT_TGZ="$(node ${PACKAGE_BUILDER} playwright ./playwright.tgz)" | 
					
						
							|  |  |  | PLAYWRIGHT_CHROMIUM_TGZ="$(node ${PACKAGE_BUILDER} playwright-chromium ./playwright-chromium.tgz)" | 
					
						
							|  |  |  | PLAYWRIGHT_WEBKIT_TGZ="$(node ${PACKAGE_BUILDER} playwright-webkit ./playwright-webkit.tgz)" | 
					
						
							|  |  |  | PLAYWRIGHT_FIREFOX_TGZ="$(node ${PACKAGE_BUILDER} playwright-firefox ./playwright-firefox.tgz)" | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | SANITY_JS="$(pwd -P)/../sanity.js" | 
					
						
							|  |  |  | TEST_ROOT="$(pwd -P)" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function run_tests { | 
					
						
							| 
									
										
										
										
											2020-05-26 17:19:05 -07:00
										 |  |  |   test_typescript_types | 
					
						
							| 
									
										
										
										
											2020-04-21 16:47:16 -07:00
										 |  |  |   test_skip_browser_download | 
					
						
							| 
									
										
										
										
											2020-04-03 23:16:14 -07:00
										 |  |  |   test_playwright_global_installation_subsequent_installs | 
					
						
							|  |  |  |   test_playwright_should_work | 
					
						
							|  |  |  |   test_playwright_chromium_should_work | 
					
						
							|  |  |  |   test_playwright_webkit_should_work | 
					
						
							|  |  |  |   test_playwright_firefox_should_work | 
					
						
							|  |  |  |   test_playwright_global_installation | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-26 17:19:05 -07:00
										 |  |  | function test_typescript_types { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # 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} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # typecheck all packages. | 
					
						
							|  |  |  |   for PKG_NAME in "playwright" \
 | 
					
						
							|  |  |  |                   "playwright-core" \
 | 
					
						
							|  |  |  |                   "playwright-firefox" \
 | 
					
						
							|  |  |  |                   "playwright-chromium" \
 | 
					
						
							|  |  |  |                   "playwright-webkit" | 
					
						
							|  |  |  |   do | 
					
						
							|  |  |  |     echo "Checking types of ${PKG_NAME}" | 
					
						
							|  |  |  |     echo "import { Page } from '${PKG_NAME}';" > "${PKG_NAME}.ts" && tsc "${PKG_NAME}.ts" | 
					
						
							|  |  |  |   done; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |   cp ${SANITY_JS} . | 
					
						
							|  |  |  |   if node sanity.js playwright chromium 2>/dev/null; then | 
					
						
							|  |  |  |     echo "Should not be able to launch chromium without PLAYWRIGHT_BROWSERS_PATH variable!" | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" node sanity.js playwright chromium | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # @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-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-04-03 23:16:14 -07:00
										 |  |  | function test_playwright_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   npm install ${PLAYWRIGHT_TGZ} | 
					
						
							|  |  |  |   cp ${SANITY_JS} . && node sanity.js playwright chromium firefox webkit | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function test_playwright_chromium_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   npm install ${PLAYWRIGHT_CHROMIUM_TGZ} | 
					
						
							|  |  |  |   cp ${SANITY_JS} . && node sanity.js playwright-chromium chromium | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function test_playwright_webkit_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   npm install ${PLAYWRIGHT_WEBKIT_TGZ} | 
					
						
							|  |  |  |   cp ${SANITY_JS} . && node sanity.js playwright-webkit webkit | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function test_playwright_firefox_should_work { | 
					
						
							|  |  |  |   initialize_test "${FUNCNAME[0]}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   npm install ${PLAYWRIGHT_FIREFOX_TGZ} | 
					
						
							|  |  |  |   cp ${SANITY_JS} . && node sanity.js playwright-firefox firefox | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function initialize_test { | 
					
						
							|  |  |  |   cd ${TEST_ROOT} | 
					
						
							|  |  |  |   local TEST_NAME="./$1" | 
					
						
							|  |  |  |   mkdir ${TEST_NAME} && cd ${TEST_NAME} && npm init -y | 
					
						
							|  |  |  |   echo "=====================================================================================" | 
					
						
							|  |  |  |   echo "=====================================================================================" | 
					
						
							|  |  |  |   echo | 
					
						
							|  |  |  |   echo "  RUNNING TEST:  ${TEST_NAME}" | 
					
						
							|  |  |  |   echo | 
					
						
							|  |  |  |   echo "=====================================================================================" | 
					
						
							|  |  |  |   echo "=====================================================================================" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Run all tests | 
					
						
							|  |  |  | # Script will terminate if there's some error somewhere. | 
					
						
							|  |  |  | run_tests | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo | 
					
						
							|  |  |  | echo "SUCCESS!" |