@echo off SETLOCAL ENABLEDELAYEDEXPANSION REM Flag for E2E Runner SET E2E_MODE=true SET E2E_TARGET=%~dp0\.\ REM e2e.bat version SET E2E_BAT_VERSION=2.1.0-beta.1 REM Navigate to E2E_SETUP then E2E_START. E2E_UPDATE is on top to allow all attempts to abort the script GOTO :E2E_SETUP REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== REM ===== This section are the default parameters and setup logic ===== REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== :E2E_UPDATE_PROCESS if not exist "%~dp0\e2e.update.bat" ( GOTO :MISSING_UPDATE ) call echo Updating e2e.bat since we managed to download the update call move /Y "%~dp0\e2e.update.bat" "%~dp0\e2e.bat" & attrib -s -h -r "e2e.bat" /s /d if "%~1" =="update" ( GOTO :EXIT ) GOTO :E2E_SETUPRESUME :E2E_UPDATE call echo Update e2e.bat if exist "%~dp0\e2e.update.bat" ( del /F /S /Q "%~dp0\e2e.update.bat" ) call echo Processing copying of e2e.bat from "\\dsone.3ds.com\Quintiqbu$\R&D\Software\AutoTest\E2E\e2e.bat" if exist "\\dsone.3ds.com\Quintiqbu$\R&D\Software\AutoTest\E2E\e2e.bat" ( copy /B /V /Y /Z "\\dsone.3ds.com\Quintiqbu$\R&D\Software\AutoTest\E2E\e2e.bat" "%~dp0\e2e.update.bat" ) if exist "%~dp0\e2e.update.bat" ( GOTO :E2E_UPDATE_PROCESS ) call echo Processing copying of e2e.bat from "\\dsone.3ds.com\Quintiqbu$\Global\Products\IndustrySolutions\Cross ISD\WebApp_E2E\E2E\e2e.bat" if exist "\\dsone.3ds.com\Quintiqbu$\Global\Products\IndustrySolutions\Cross ISD\WebApp_E2E\E2E\e2e.bat" ( copy /B /V /Y /Z "\\dsone.3ds.com\Quintiqbu$\Global\Products\IndustrySolutions\Cross ISD\WebApp_E2E\E2E\e2e.bat" "%~dp0\e2e.update.bat" ) if exist "%~dp0\e2e.update.bat" ( GOTO :E2E_UPDATE_PROCESS ) call Ping widgetfactory.extranet.3ds.com -n 1 -w 1000 if errorlevel 1 ( call echo Internal network not found. ) else ( call echo Processing downloading of e2e.bat from "https://widgetfactory.extranet.3ds.com/api/download/WebDAV/file/WebAppRelease/public/E2E/e2e.bat" powershell.exe -Command ^ $WebClient = New-Object System.Net.WebClient ; ^ $WebClient.DownloadFile('https://widgetfactory.extranet.3ds.com/api/download/WebDAV/file/WebAppRelease/public/E2E/e2e.bat', '%~dp0\e2e.update.bat') if exist "%~dp0\e2e.update.bat" ( GOTO :E2E_UPDATE_PROCESS ) ) if not "%~1" =="update" ( call echo Proceed execution GOTO :E2E_SETUPRESUME ) REM Abort after update as the E2E_UPDATE will cause issues if there is a continuation GOTO :MISSING_UPDATE REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== REM ===== This section are the default parameters and setup logic ===== REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== :E2E_SETUP GOTO :E2E_UPDATE :E2E_SETUPRESUME SET E2E_ZIP_HANDLING_MODE=NULL REM Check whether is E2ELib for %%I in (.) do set CURRENT_FOLDER=%%~nxI SET PUSH_PATH="%~dp0\e2elib" REM set path for pointer IF "%CURRENT_FOLDER%"=="e2elib" SET ISE2E=TRUE IF "%CURRENT_FOLDER%"=="E2Elib" SET ISE2E=TRUE IF "%ISE2E%"=="TRUE" SET PUSH_PATH="%~dp0" REM These E2E_ARG* are designed to be usable by the Test executors by looking at the process.env.E2E_ARG... REM as there may be cases where the process.argv[?] is not passed along properly SET E2E_ARG_1=%~1 SET E2E_ARG_2=%~2 SET E2E_ARG_3=%~3 SET E2E_ARG_4=%~4 SET E2E_ARG_5=%~5 SET E2E_ARG_6=%~6 SET E2E_ARG_7=%~7 SET E2E_ARG_8=%~8 SET E2E_ARG_9=%~9 SET E2E_ARGS=%* REM Create this folder at root as this is the operating folder for the e2e.bat if not exist "%CD:~0,2%\E2E-TOOLS" ( mkdir "%CD:~0,2%\E2E-TOOLS" ) REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== REM ===== This section is the Start-up logic ===== REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== :E2E_START REM If there are no arguments provided we will try to process the default behaviour if "%~1" == "" ( REM We support the e2elib.zip being placed in the same folder as the e2e.bat to allow immediate handling of the e2elib.zip extraction if exist "%~dp0\e2elib.zip" ( call echo E2ELib.zip file is found, starting extraction before default run. REM Set the continuation of the ZIP handling SET E2E_ZIP_HANDLING_MODE=ZIP_LOCAL GOTO :ZIP_TOOL ) if exist "%~dp0\e2elib" ( REM Since the environment seems to be OK, we can trigger default run GOTO :RUN_DEFAULT ) REM Go to missing start configuration GOTO :MISSING_START ) REM Convert argument to upper-case for comparison SET FIRST_ARG=%~1 for %%a in ("a=A" "b=B" "c=C" "d=D" "e=E" "f=F" "g=G" "h=H" "i=I" "j=J" "k=K" "l=L" "m=M" "n=N" "o=O" "p=P" "q=Q" "r=R" "s=S" "t=T" "u=U" "v=V" "w=W" "x=X" "y=Y" "z=Z" "ä=Ä" "ö=Ö" "ü=Ü") do ( SET FIRST_ARG=!FIRST_ARG:%%~a! ) REM If the first argument is RUN, we go to the RUN_COMMAND section if "!FIRST_ARG!" == "RUN" ( call echo Going to RUN command section GOTO :RUN_COMMAND ) REM If the first argument is RUN, we go to the RUN_COMMAND section if "!FIRST_ARG!" == "--RUN" ( call echo Going to RUN command section GOTO :RUN_COMMAND ) REM If the first argument is RUN, we go to the RUN_COMMAND section if "!FIRST_ARG!" == "-R" ( call echo Going to RUN command section GOTO :RUN_COMMAND ) REM If the first argument is RUN, we go to the RUN_COMMAND section if "!FIRST_ARG!" == "/RUN" ( call echo Going to RUN command section GOTO :RUN_COMMAND ) REM If the first argument is RUN, we go to the RUN_COMMAND section if "!FIRST_ARG!" == "/R" ( call echo Going to RUN command section GOTO :RUN_COMMAND ) REM If the first argument is UPDATE, we go to the E2E_UPDATE section if "!FIRST_ARG!" == "UPDATE" ( GOTO :E2E_UPDATE ) REM If the first argument is UPDATE, we go to the E2E_UPDATE section if "!FIRST_ARG!" == "--UPDATE" ( GOTO :E2E_UPDATE ) REM If the first argument is UPDATE, we go to the E2E_UPDATE section if "!FIRST_ARG!" == "-U" ( GOTO :E2E_UPDATE ) REM If the first argument is UPDATE, we go to the E2E_UPDATE section if "!FIRST_ARG!" == "/UPDATE" ( GOTO :E2E_UPDATE ) REM If the first argument is UPDATE, we go to the E2E_UPDATE section if "!FIRST_ARG!" == "/U" ( GOTO :E2E_UPDATE ) REM If the first argument is VERSION, we go to the E2E_UPDATE section if "!FIRST_ARG!" == "VERSION" ( GOTO :E2E_VERSION ) REM If the first argument is VERSION, we go to the E2E_UPDATE section if "!FIRST_ARG!" == "--VERSION" ( GOTO :E2E_VERSION ) REM If the first argument is VERSION, we go to the E2E_UPDATE section if "!FIRST_ARG!" == "-V" ( GOTO :E2E_VERSION ) REM If the first argument is VERSION, we go to the E2E_UPDATE section if "!FIRST_ARG!" == "/VERSION" ( GOTO :E2E_VERSION ) REM If the first argument is VERSION, we go to the E2E_UPDATE section if "!FIRST_ARG!" == "/V" ( GOTO :E2E_VERSION ) REM If the first argument is HELP, we go to the E2E_HELP section if "!FIRST_ARG!" == "HELP" ( GOTO :E2E_HELP ) REM If the first argument is HELP, we go to the E2E_HELP section if "!FIRST_ARG!" == "--HELP" ( GOTO :E2E_HELP ) REM If the first argument is HELP, we go to the E2E_HELP section if "!FIRST_ARG!" == "-H" ( GOTO :E2E_HELP ) REM If the first argument is HELP, we go to the E2E_HELP section if "!FIRST_ARG!" == "/HELP" ( GOTO :E2E_HELP ) REM If the first argument is HELP, we go to the E2E_HELP section if "!FIRST_ARG!" == "/H" ( GOTO :E2E_HELP ) REM If the first argument is HELP, we go to the E2E_HELP section if "!FIRST_ARG!" == "?" ( GOTO :E2E_HELP ) REM If the first argument is HELP, we go to the E2E_HELP section if "!FIRST_ARG!" == "--?" ( GOTO :E2E_HELP ) REM If the first argument is HELP, we go to the E2E_HELP section if "!FIRST_ARG!" == "-?" ( GOTO :E2E_HELP ) REM If the first argument is HELP, we go to the E2E_HELP section if "!FIRST_ARG!" == "/?" ( GOTO :E2E_HELP ) REM If the first argument is WEBDRIVER, we go to the WEBDRIVER section if "!FIRST_ARG!" == "WEBDRIVER" ( GOTO :WEBDRIVER ) REM If the first argument is not a valid COMMAND, we check if it is the ZIP path for the e2elib.zip if not exist "%CD:~0,2%\E2E-TOOLS\Download\" ( mkdir "%CD:~0,2%\E2E-TOOLS\Download\" ) if exist "%CD:~0,2%\E2E-TOOLS\Download\e2elib.zip" ( del /F /S /Q "%CD:~0,2%\E2E-TOOLS\Download\e2elib.zip" ) if exist "%~1" ( if "%~nx1" == "e2elib.zip" ( call echo File path provided seems to exist, processing ZIP file handling GOTO :ZIP_TOOL ) REM If the Path contain e2elib.zip, use it REM Enforce E2E.bat to update when extract new e2ezip if exist "%~1\e2elib.zip" ( call echo Found e2elib.zip in given path "%~1" , processing ZIP file handling call echo Copying e2elib to local drive to avoid issues for 7za at "%CD:~0,2%\E2E-TOOLS\Download\" REM Copy e2elib.zip to local drive to prevent issues as 7za.exe requires local file copy /B /V /Y /Z "%~1\e2elib.zip" "%CD:~0,2%\E2E-TOOLS\Download\" GOTO :ZIP_TOOL ) REM IF the Path Exist but without e2elib.zip, we check it in latest directory For /F "Delims=" %%A In (' PowerShell -C "Get-ChildItem '%~1' | ?{ $_.PSIsContainer } | Select-Object -Expand Name | Sort-Object { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) } -Descending" ') Do ( if exist "%~1\%%A\e2elib.zip" ( call echo Found e2elib.zip in given path ="%~1"\%%A , processing ZIP file handling call echo Copying e2elib to local drive to avoid issues for 7za at "%CD:~0,2%\E2E-TOOLS\Download\" REM Copy e2elib.zip to local drive to prevent issues as 7za.exe requires local file copy /B /V /Y /Z "%~1\%%A\e2elib.zip" "%CD:~0,2%\E2E-TOOLS\Download\" GOTO :ZIP_TOOL ) ) ) REM If we end up here we can assume the command in invalid GOTO :INVALID_COMMAND REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== REM ===== This section is the ZIP handling logic ===== REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== :ZIP_TOOL REM If the 7za folder is not available we need to create it if not exist "%CD:~0,2%\E2E-TOOLS\7za1900" ( mkdir "%CD:~0,2%\E2E-TOOLS\7za1900" ) REM Check if we have 7za already if exist "%CD:~0,2%\E2E-Tools\7za1900\7za.exe" ( call echo Using existing copy of 7za.exe GOTO :ZIP_TOOL_DONE ) call echo Processing copying of 7za to enable unzipping of resources from "\\dsone.3ds.com\Quintiqbu$\R&D\Software\AutoTest\7za1900" REM Copy from Core Technology Department Shared Software directory, more restrictions copy /B /V /Y /Z "\\dsone.3ds.com\Quintiqbu$\R&D\Software\AutoTest\7za1900" "%CD:~0,2%\E2E-Tools\7za1900" REM Validate if copy is successful if exist "%CD:~0,2%\E2E-Tools\7za1900\7za.exe" ( GOTO :ZIP_TOOL_DONE ) call echo Processing copying of 7za to enable unzipping of resources from "\\dsone.3ds.com\Quintiqbu$\Global\Products\IndustrySolutions\Cross ISD\WebApp_E2E\7za1900" REM Copy from Application Development Team Shared directory, less restrictions copy /B /V /Y /Z "\\dsone.3ds.com\Quintiqbu$\Global\Products\IndustrySolutions\Cross ISD\WebApp_E2E\7za1900" "%CD:~0,2%\E2E-Tools\7za1900" REM Validate if copy is successful if exist "%CD:~0,2%\E2E-Tools\7za1900\7za.exe" ( GOTO :ZIP_TOOL_DONE ) call echo Processing downloading of 7za to enable unzipping of resources from "https://widgetfactory.extranet.3ds.com/api/download/WebDAV/file/WebAppRelease/public/7za1900/" REM We use PowerShell to process the download as this is the most universal approach powershell.exe -Command ^ $WebClient = New-Object System.Net.WebClient ; ^ $WebClient.DownloadFile('https://widgetfactory.extranet.3ds.com/api/download/WebDAV/file/WebAppRelease/public/7za1900/7za.dll', '%CD:~0,2%\E2E-Tools\7za1900\7za.dll') ; ^ $WebClient.DownloadFile('https://widgetfactory.extranet.3ds.com/api/download/WebDAV/file/WebAppRelease/public/7za1900/7zxa.dll', '%CD:~0,2%\E2E-Tools\7za1900\7zxa.dll') ; ^ $WebClient.DownloadFile('https://widgetfactory.extranet.3ds.com/api/download/WebDAV/file/WebAppRelease/public/7za1900/7za.exe', '%CD:~0,2%\E2E-Tools\7za1900\7za.exe') ; ^ $WebClient.DownloadFile('https://widgetfactory.extranet.3ds.com/api/download/WebDAV/file/WebAppRelease/public/7za1900/history.txt', '%CD:~0,2%\E2E-Tools\7za1900\history.txt') ; ^ $WebClient.DownloadFile('https://widgetfactory.extranet.3ds.com/api/download/WebDAV/file/WebAppRelease/public/7za1900/License.txt', '%CD:~0,2%\E2E-Tools\7za1900\License.txt') ; ^ $WebClient.DownloadFile('https://widgetfactory.extranet.3ds.com/api/download/WebDAV/file/WebAppRelease/public/7za1900/readme.txt', '%CD:~0,2%\E2E-Tools\7za1900\readme.txt') REM Validate if download is successful if exist "%CD:~0,2%\E2E-Tools\7za1900\7za.exe" ( GOTO :ZIP_TOOL_DONE ) REM If we end up here when processing the ZIP_TOOL, we likely failed to automatically retrieve the executable GOTO :MISSING_7ZA :ZIP_TOOL_DONE if "!E2E_ZIP_HANDLING_MODE!" == "ZIP_LOCAL" ( REM Go to ZIP_LOCAL step after ZIP_TOOL is ready GOTO :ZIP_LOCAL ) REM Continue to ZIP_COPY step after ZIP_TOOL is ready :ZIP_COPY call echo testing call echo Extracting e2elib.zip for %%I in (.) do set CURRENT_FOLDER=%%~nxI REM set path for pointer IF "%CURRENT_FOLDER%"=="e2elib" SET ISE2E=TRUE IF "%CURRENT_FOLDER%"=="E2Elib" SET ISE2E=TRUE REM Use 7za.exe to extract zip call "%CD:~0,2%\E2E-Tools\7za1900\7za.exe" x -aoa -y -o"%~dp0" "%CD:~0,2%\E2E-TOOLS\Download\e2elib.zip" if "%ISE2E%" == "TRUE" ( call xcopy /r /y /s /i "%~dp0\e2elib\quintiq_modules" "%~dp0\quintiq_modules" > nul ) else ( if exist "%~dp0\e2elib\e2elocalconfig.json" ( call echo Copy config for vscode to e2e copy /B /V /Y /Z "%~dp0\e2elib\e2elocalconfig.json" "%~dp0\tsconfig.json" ) ) REM Remove Model in e2elib call Rmdir /Q /S "%~dp0\e2elib\model" REM End of ZIP_COPY GOTO :EXIT :ZIP_LOCAL call echo Extracting e2elib.zip REM Use 7za.exe to extract zip call "%CD:~0,2%\E2E-Tools\7za1900\7za.exe" x -aoa -y -o"%~dp0" "%~dp0\e2elib.zip" if "%ISE2E%" == "TRUE" ( call xcopy /r /y /s /i "%~dp0\e2elib\quintiq_modules" "%~dp0\quintiq_modules" > nul ) else ( if exist "%~dp0\e2elib\e2elocalconfig.json" ( call echo Copy config for vscode to e2e copy /B /V /Y /Z "%~dp0\e2elib\e2elocalconfig.json" "%~dp0\tsconfig.json" ) ) REM End of ZIP_LOCAL GOTO :EXIT REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== REM ===== This section is the RUN command ===== REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== :RUN_DEFAULT call echo Executing default run REM Configure RUN argument SET SECOND_ARG=CHROME REM Start RUN execution by skipping RUN_COMMAND processing GOTO :RUN_EXECUTION :RUN_COMMAND REM Convert argument to upper-case for comparison SET SECOND_ARG=%~2 for %%a in ("a=A" "b=B" "c=C" "d=D" "e=E" "f=F" "g=G" "h=H" "i=I" "j=J" "k=K" "l=L" "m=M" "n=N" "o=O" "p=P" "q=Q" "r=R" "s=S" "t=T" "u=U" "v=V" "w=W" "x=X" "y=Y" "z=Z" "ä=Ä" "ö=Ö" "ü=Ü") do ( SET SECOND_ARG=!SECOND_ARG:%%~a! ) :RUN_EXECUTION if not "%ISE2E%" == "TRUE" ( if not exist "%~dp0\e2elib\" ( REM Failure to find the e2elib GOTO :MISSING_E2ELIB ) ) REM Validate if the request is to run the TypeScript compiler if "!SECOND_ARG!" == "TSC" ( call echo Triggering TypeScript compilation call echo. pushd %PUSH_PATH% IF "%ISE2E%"=="TRUE" ( call npm run tsc %3 %4 %5 %6 %7 %8 %9 ) ELSE ( call npm run e2e:tsc %3 %4 %5 %6 %7 %8 %9 ) popd call echo. call echo TypeScript compilation completed, exiting... REM End of RUN_TSC GOTO :EXIT ) if "!SECOND_ARG!" == "CLEAN" ( call echo Triggering TypeScript cleaning call echo. pushd %PUSH_PATH% IF "%ISE2E%"=="TRUE" ( call npm run clean %3 %4 %5 %6 %7 %8 %9 ) ELSE ( call npm run e2e:clean %3 %4 %5 %6 %7 %8 %9 ) popd call echo. call echo TypeScript cleaning completed, exiting... REM End of RUN_CLEAN GOTO :EXIT ) REM Validate if the request is to run the TypeScript code linter if "!SECOND_ARG!" == "LINT" ( call echo Triggering TypeScript code linter call echo. pushd %PUSH_PATH% IF "%ISE2E%"=="TRUE" ( call npm run lint %3 %4 %5 %6 %7 %8 %9 ) ELSE ( call npm run e2e:lint %3 %4 %5 %6 %7 %8 %9 ) popd call echo. call echo TypeScript code linting completed, exiting... REM End of RUN_LINT GOTO :EXIT ) REM Validate if the request is to run the LOCAL run if "!SECOND_ARG!" == "LOCAL" ( call echo Triggering Local run call echo. pushd %PUSH_PATH% REM skip the argument %3 if it is not started with -- IF "%E2E_ARG_3:~0,2%"=="--" ( call npm run e2e:local -- %3 %4 %5 %6 %7 %8 %9 ) else ( call npm run e2e:local -- %4 %5 %6 %7 %8 %9 ) popd call echo. call echo Local run completed, exiting... REM End of RUN_LOCAL GOTO :EXIT ) REM Validate if the request is to run the CHROME run if "!SECOND_ARG!" == "CHROME" ( call echo Triggering Chrome run call echo. pushd %PUSH_PATH% REM skip the argument %3 if it is not started with -- IF "%E2E_ARG_3:~0,2%"=="--" ( call npm run e2e:chrome -- %3 %4 %5 %6 %7 %8 %9 ) else ( call npm run e2e:chrome -- %4 %5 %6 %7 %8 %9 ) popd call echo. call echo Chrome run completed, exiting... REM End of RUN_CHROME GOTO :EXIT ) REM Validate if the request is to run the FIREFOX run if "!SECOND_ARG!" == "FIREFOX" ( call echo Triggering Firefox run call echo. pushd %PUSH_PATH% REM skip the argument %3 if it is not started with -- IF "%E2E_ARG_3:~0,2%"=="--" ( call npm run e2e:firefox -- %3 %4 %5 %6 %7 %8 %9 ) else ( call npm run e2e:firefox -- %4 %5 %6 %7 %8 %9 ) popd call echo. call echo Chrome run completed, exiting... REM End of RUN_FIREFOX GOTO :EXIT ) REM Validate if the request is to run the MSEDGE run if "!SECOND_ARG!" == "EDGE" ( call echo Triggering MSEdge run call echo. pushd %PUSH_PATH% REM skip the argument %3 if it is not started with -- IF "%E2E_ARG_3:~0,2%"=="--" ( call npm run e2e:msedge -- %3 %4 %5 %6 %7 %8 %9 ) else ( call npm run e2e:msedge -- %4 %5 %6 %7 %8 %9 ) popd call echo. call echo Chrome run completed, exiting... REM End of RUN_FIREFOX GOTO :EXIT ) REM Validate if the request is to run the FIREFOX run if "!SECOND_ARG!" == "BROWSERS" ( call echo Triggering cross browsers run call echo. pushd %PUSH_PATH% REM skip the argument %3 if it is not started with -- IF "%E2E_ARG_3:~0,2%"=="--" ( call npm run e2e:browsers -- %3 %4 %5 %6 %7 %8 %9 ) else ( call npm run e2e:browsers -- %4 %5 %6 %7 %8 %9 ) popd call echo. call echo Chrome run completed, exiting... REM End of RUN_FIREFOX GOTO :EXIT ) REM The RUN_COMMAND will end up here if the COMMAND is invalid GOTO :UNKNOWN_COMMAND REM The WEBDRIVER will performance webdriver-manager update and star the webdriver-manager :WEBDRIVER pushd %PUSH_PATH% REM Download MSEdgeDriver FOR /F "TOKENS=1-2* SKIP=2" %%A IN ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Edge\BLBeacon" /v version') DO SET QUERY_OUTPUT=%%C call echo Processing downloading of microsoft edge driver from "https://msedgedriver.azureedge.net/%QUERY_OUTPUT%/edgedriver_win64.zip" call echo Tempory disable due to VM not able to download REM powershell.exe -Command ^ REM [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12^ REM $WebClient = New-Object System.Net.WebClient ; ^ REM $WebClient.DownloadFile('https://msedgedriver.azureedge.net/%QUERY_OUTPUT%/edgedriver_win64.zip', '.\edgedriver_win64.zip') REM call echo Unzip the edge driver REM powershell.exe -Command ^ REM Expand-Archive -LiteralPath .\edgedriver_win64.zip -DestinationPath . -Force REM call "%CD:~0,2%\E2E-Tools\7za1900\7za.exe" x -aoa -y -o".\" ".\edgedriver_win64.zip" REM Tempory implementation for the scripts that might not have the latest webdriver-manager 13.0.0 FOR /F "TOKENS=1-2* SKIP=2" %%A IN ('reg query "HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon" /v version') DO SET QUERY_OUTPUT=%%C FOR /F "tokens=*" %%g IN ('node node_modules\webdriver-manager\bin\webdriver-manager --version') do (set webDriverVersion=%%g) IF "%QUERY_OUTPUT:~0,3%" == "91." ( SET QUERY_OUTPUT=90.0.4430.218 ) call node node_modules\webdriver-manager\bin\webdriver-manager update --versions.chrome=%QUERY_OUTPUT% --versions.standalone=3.141.59 IF %webDriverVersion% == 13.0.0 ( call start node node_modules\webdriver-manager\bin\webdriver-manager start --edge=".\msedgedriver.exe" ) ELSE ( call start node node_modules\webdriver-manager\bin\webdriver-manager start --versions.chrome=%QUERY_OUTPUT% --edge=".\msedgedriver.exe" ) popd REM The WEBDRIVER will end here GOTO :EXIT REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== REM ===== This section are all the messages ===== REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== :E2E_HELP call echo. call echo ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== call echo ===== E2E.BAT ===== call echo ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== call echo. call echo Welcome to the "e2e.bat", where this script is developed to assist you in setting up the Web Application End-to-End call echo Testing environment to enable you to run your test. call echo. call echo. call echo ===== Requirements ===== call echo. call echo Please take note that this "e2e.bat" has the requirement of running beside the "e2e" folder where the "e2e" test call echo scripts are developed and stored. call echo. call echo The assumption is that the location of this "e2e.bat" and the "e2e" scripts are at the following location: call echo - [MODEL]\_Main\Sys\Definitions call echo. call echo Environment requirement will be that there must be Node.JS installed on your machine and is accessible from the console. call echo. call echo Please go to "https://nodejs.org/en/" and download the "LTS", version 8.00 or higher. call echo Ensure that you install Node.JS and the "node" and "npm" commands are available in the console. call echo The important part is that this script executes the following executable "npm" to manage the "e2e" scripts. call echo. call echo. call echo ===== Available Commands ===== call echo. call echo There are several ways to use this "e2e.bat": call echo - Start the "e2e.bat" with no arguments when the environment is already configured to trigger the "run chrome" action. call echo CONSOLE: e2e call echo - Start the "e2e.bat" with the path to the e2elib.zip to enable the downloading and extraction of the e2elib. call echo CONSOLE: e2e "\\dsone.3ds.com\Quintiqbu$\R&D\Projects\Web Client\_RELEASE_\197613\e2elib.zip" call echo - Start the "e2e.bat" with commands and sub-commands, more in the table later. call echo CONSOLE: e2e help call echo CONSOLE: e2e run tsc call echo. call echo These are the available commands and sub-commands: call echo ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- call echo : COMMAND : SUB : DESCRIPTION : call echo ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- call echo : help : : Shows this help page : call echo ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- call echo : version : : Gets the current version : call echo ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- call echo : update : : Update this e2e.bat : call echo ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- call echo : webdriver : : Update and run the webdriver : call echo ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- call echo : run : : NPM based run action group : call echo : : tsc : Run E2E TypeScript compilation : call echo : : lint : Run E2E TypeScript code linting : call echo : : local : Run E2E Local test action : call echo : : chrome : Run E2E Local Chrome test action : call echo : : firefox : Run E2E Local Firefox test action : call echo : : edge : Run E2E Local MSEdge test action : call echo : : browsers : Run E2E Local chrome and firefox : call echo ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- call echo. REM End of E2E_VERSION GOTO :EOF :E2E_VERSION call echo e2e.bat, version %E2E_BAT_VERSION% REM End of E2E_VERSION GOTO :EOF :MISSING_START call echo. call echo Please provide either a Path to an E2ELib or start with the "run" command call echo Only of the E2ELib folder is found beside this script can this script execute the default run without arguments call echo. REM End of MISSING_START GOTO :EXIT :MISSING_UPDATE call echo. call echo Failed to retrieve latest e2e.bat from the locations mentioned above call echo Please either attempt to do this manually or file a support request call echo. REM End of MISSING_UPDATE GOTO :EXIT :MISSING_E2ELIB call echo. call echo Attempted to execute the RUN command but the e2elib is not found call echo. REM End of MISSING_E2ELIB GOTO :EXIT :MISSING_7ZA call echo. call echo Failed to really download or copy the 7za.exe call echo. call echo Please go to "https://www.7-zip.org/download.html" and download the "7-Zip Extra", version 19.00 or higher. call echo Ensure that you extract the contents of "7z1900-extra.7z" to the "%CD:~0,2%\E2E-Tools\7za1900" and make sure that the "7za.exe" is available. call echo The important part is that this script executes the following executable "%CD:~0,2%\E2E-Tools\7za1900\7za.exe" for ZIP file extraction. call echo. REM End of MISSING_7ZA GOTO :EXIT :UNKNOWN_COMMAND call echo. call echo Unknown RUN command: %~2 call echo. REM End of UNKNOWN_COMMAND GOTO :EXIT :INVALID_COMMAND call echo. call echo Invalid file path or command, exiting... call echo. REM End of INVALID_COMMAND GOTO :EXIT :UPDATE_UNZIP REM Unzip the e2elib.zip if exist IF EXIST "%CD:~0,2%\E2E-TOOLS\Download\e2elib.zip" ( GOTO :ZIP_TOOL ) ELSE ( GOTO :EOF ) REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== REM ===== This is the end of file or exit handling ===== REM ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== ===== :EXIT call echo Exiting... ENDLOCAL