mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	 65ca87cd9a
			
		
	
	
		65ca87cd9a
		
			
		
	
	
	
	
		
			
			Drive-by: introduce installation tests that use `npm pack` to simulate installation from NPM registry. Fixes #1651
		
			
				
	
	
		
			128 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| set -e
 | |
| set +x
 | |
| 
 | |
| trap "cd $(pwd -P)" EXIT
 | |
| cd "$(dirname $0)"
 | |
| 
 | |
| # 1. Pack all packages.
 | |
| 
 | |
| rm -rf ./output
 | |
| mkdir ./output
 | |
| cd ./output
 | |
| 
 | |
| npm pack ../../..
 | |
| npm pack ../../../packages/playwright
 | |
| npm pack ../../../packages/playwright-chromium
 | |
| npm pack ../../../packages/playwright-webkit
 | |
| npm pack ../../../packages/playwright-firefox
 | |
| 
 | |
| # There is no option to specify output for `npm pack`, but the format is
 | |
| # fixed.
 | |
| PACKAGE_VERSION=$(node -e 'console.log(require("../../../package.json").version)')
 | |
| PLAYWRIGHT_CORE_TGZ="$(pwd -P)/playwright-core-${PACKAGE_VERSION}.tgz"
 | |
| PLAYWRIGHT_TGZ="$(pwd -P)/playwright-${PACKAGE_VERSION}.tgz"
 | |
| PLAYWRIGHT_CHROMIUM_TGZ="$(pwd -P)/playwright-chromium-${PACKAGE_VERSION}.tgz"
 | |
| PLAYWRIGHT_WEBKIT_TGZ="$(pwd -P)/playwright-webkit-${PACKAGE_VERSION}.tgz"
 | |
| PLAYWRIGHT_FIREFOX_TGZ="$(pwd -P)/playwright-firefox-${PACKAGE_VERSION}.tgz"
 | |
| 
 | |
| SANITY_JS="$(pwd -P)/../sanity.js"
 | |
| TEST_ROOT="$(pwd -P)"
 | |
| 
 | |
| function run_tests {
 | |
|   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
 | |
| }
 | |
| 
 | |
| function test_playwright_global_installation {
 | |
|   initialize_test "${FUNCNAME[0]}"
 | |
| 
 | |
|   local BROWSERS="$(pwd -P)/browsers"
 | |
|   PLAYWRIGHT_BROWSERS_PATH="${BROWSERS}" npm install ${PLAYWRIGHT_CORE_TGZ}
 | |
|   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_CORE_TGZ}
 | |
|   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
 | |
| }
 | |
| 
 | |
| function test_playwright_should_work {
 | |
|   initialize_test "${FUNCNAME[0]}"
 | |
| 
 | |
|   npm install ${PLAYWRIGHT_CORE_TGZ}
 | |
|   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_CORE_TGZ}
 | |
|   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_CORE_TGZ}
 | |
|   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_CORE_TGZ}
 | |
|   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!"
 |