mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	
		
			
	
	
		
			128 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			128 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
|   | #!/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!" |