@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 
 |