zrhoffman commented on a change in pull request #5663:
URL: https://github.com/apache/trafficcontrol/pull/5663#discussion_r600796918



##########
File path: .github/workflows/tp.integration.tests.yml
##########
@@ -90,27 +92,33 @@ jobs:
     steps:
       - name: Checkout
         uses: actions/checkout@master
-      - name: Cache Alpine Docker image
-        uses: actions/cache@v2
-        with:
-          path: ${{ github.workspace }}/docker-images
-          key: docker-images/alpine@${{ env.ALPINE_VERSION }}.tar.gz
-      - name: Import cached Alpine Docker image
-        run: .github/actions/save-alpine-tar/entrypoint.sh load ${{ 
env.ALPINE_VERSION }}
-      - name: Cache node modules
-        uses: actions/cache@v2
-        with:
-          path: ~/.npm
-          key: ${{ runner.os }}-node-modules-${{ 
hashFiles('traffic_portal/package-lock.json traffic_portal/bower.json') }}
-          restore-keys: |
-            ${{ runner.os }}-node-modules-
+#      - name: Cache Alpine Docker image
+#        uses: actions/cache@v2
+#        with:
+#          path: ${{ github.workspace }}/docker-images
+#          key: docker-images/alpine@${{ env.ALPINE_VERSION }}.tar.gz
+#      - name: Import cached Alpine Docker image
+#        run: .github/actions/save-alpine-tar/entrypoint.sh load ${{ 
env.ALPINE_VERSION }}

Review comment:
       The *todb-init* action uses an Alpine-based image, so these caching 
steps should be kept.

##########
File path: .github/actions/tp-integration-tests/entrypoint.sh
##########
@@ -141,82 +144,99 @@ start_traffic_vault &
 
 sudo apt-get install -y --no-install-recommends gettext \
        ruby ruby-dev libc-dev curl \
-       chromium-chromedriver postgresql-client \
        gcc musl-dev
 
-sudo gem update --system && sudo gem install sass compass
-sudo npm i -g protractor@^7.0.0 forever bower grunt selenium-webdriver
+sudo gem update --system && sudo gem install sass compass 
+sudo npm i -g forever bower grunt
 
-CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
-CHROME_VER=$(docker exec "$CONTAINER" google-chrome --version | sed -E 's/.* 
([0-9.]+).*/\1/')
-sudo webdriver-manager update --gecko false --versions.chrome 
"LATEST_RELEASE_$CHROME_VER"
+CHROME_CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
+HUB_CONTAINER=$(docker ps | grep "selenium/hub" | awk '{print $1}')
+CHROME_VER=$(docker exec "$CHROME_CONTAINER" google-chrome --version | sed -E 
's/.* ([0-9.]+).*/\1/')
 
 GOROOT=/usr/local/go
 export PATH="${PATH}:${GOROOT}/bin"
 download_go
 export GOPATH="${HOME}/go"
 readonly ORG_DIR="$GOPATH/src/github.com/apache"
 readonly REPO_DIR="${ORG_DIR}/trafficcontrol"
+resources="$(dirname "$0")"
 if [[ ! -e "$REPO_DIR" ]]; then
        mkdir -p "$ORG_DIR"
        cd
        mv "${GITHUB_WORKSPACE}" "${REPO_DIR}/"
        ln -s "$REPO_DIR" "${GITHUB_WORKSPACE}"
 fi
 
-cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+to_build() {
+  cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+  go mod vendor -v
+  go build . 
+  
+  openssl req -new -x509 -nodes -newkey rsa:4096 -out localhost.crt -keyout 
localhost.key -subj "/CN=tptests";
+
+  envsubst <"${resources}/cdn.json" >cdn.conf
+  cp "${resources}/database.json" database.conf
+
+  export $(<"${ciab_dir}/variables.env" sed '/^#/d') # defines 
TV_ADMIN_USER/PASSWORD
+  envsubst <"${resources}/riak.json" >riak.conf
+  truncate --size=0 warning.log error.log event.log info.log 
+  
+  ./traffic_ops_golang --cfg ./cdn.conf --dbcfg ./database.conf -riakcfg 
riak.conf &
+  tail -f warning.log 2>&1 | color_and_prefix "${yellow_bg}" 'Traffic Ops 
WARN' &
+  tail -f error.log 2>&1 | color_and_prefix "${red_bg}" 'Traffic Ops ERR' &
+  tail -f event.log 2>&1 | color_and_prefix "${gray_bg}" 'Traffic Ops EVT' &
+}
 
-go mod vendor -v > /dev/null
-go build . > /dev/null
- 
+tp_build() {
+  cd "${REPO_DIR}/traffic_portal"
+  npm ci
+  bower install
+  grunt dist
 
-openssl req -new -x509 -nodes -newkey rsa:4096 -out localhost.crt -keyout 
localhost.key -subj "/CN=tptests";
+  cp "${resources}/config.js" ./conf/
+  touch tp.log access.log out.log err.log
+  sudo forever --minUptime 5000 --spinSleepTime 2000 -f -o out.log start 
server.js &
+  tail -f err.log 2>&1 | color_and_prefix "${red_bg}" "Node Err" &
+}
 
-resources="$(dirname "$0")"
-envsubst <"${resources}/cdn.json" >cdn.conf
-cp "${resources}/database.json" database.conf
+(to_build) &
+(tp_build) &
 
-export $(<"${ciab_dir}/variables.env" sed '/^#/d') # defines 
TV_ADMIN_USER/PASSWORD
-envsubst <"${resources}/riak.json" >riak.conf
+onFail() {
+       docker logs "$trafficvault"  > Reports/traffic_vault.log
+  mv tp.log Reports/forever.log
+  mv access.log Reports/tp-access.log
+  mv out.log Reports/node.log
+  docker logs $CHROME_CONTAINER > Reports/chrome.log
+  docker logs $HUB_CONTAINER > Reports/hub.log
+  echo "Detailed logs produced info Reports artifact"
+  exit 1
+}
 
-truncate --size=0 warning.log error.log event.log # Removes output from 
previous API versions and makes sure files exist
-./traffic_ops_golang --cfg ./cdn.conf --dbcfg ./database.conf -riakcfg 
riak.conf &
-tail -f warning.log 2>&1 | color_and_prefix "${yellow_bg}" 'Traffic Ops' &
-tail -f error.log 2>&1 | color_and_prefix "${red_bg}" 'Traffic Ops' &
-tail -f event.log 2>&1 | color_and_prefix "${gray_bg}" 'Traffic Ops' &
 
-cd "../../traffic_portal"
+cd "${REPO_DIR}/traffic_portal/test/integration"
 npm ci
-bower install
-grunt dist
-
-cp "${resources}/config.js" ./conf/
-touch tp.log access.log
-sudo forever --minUptime 5000 --spinSleepTime 2000 -l ./tp.log start server.js 
&
-
-fqdn="https://localhost:8443";
-while ! curl -Lvsk "${fqdn}/api/3.0/ping" >/dev/null 2>&1; do
-  echo "waiting for TP/TO server to start on '${fqdn}'"
-  sleep 10
-done
+PATH=$(pwd)/node_modules/.bin/:$PATH
 
+webdriver-manager update --gecko false --versions.chrome 
"LATEST_RELEASE_$CHROME_VER"
 
-cd "test/end_to_end"
 jq " .capabilities.chromeOptions.args = [
-    \"--disable-extensions\",
-    \"--disable-gpu\",
     \"--headless\",
     \"--no-sandbox\",
+    \"--disable-gpu\",
     \"--ignore-certificate-errors\"
-  ] | .baseUrl = \"${fqdn}\" | del(.seleniumAddress)" \
-  conf.json > conf.json.tmp && mv conf.json.tmp conf.json
-
-onFail() {
-       docker logs "$trafficvault" 2>&1 |
-               color_and_prefix "$gray_bg" 'Traffic Vault';
-  cat tp.log | color_and_prefix "${gray_bg}" 'Forever'
-  cat access.log | color_and_prefix "${gray_bg}" 'Traffic Portal'
-  exit 1
-}
-
-sudo protractor ./conf.js || onFail
+  ] | .params.apiUrl = \"${tp_fqdn}/api/4.0\" | .params.baseUrl =\"${tp_fqdn}\"
+  | .capabilities[\"goog:chromeOptions\"].w3c = false | 
.capabilities.chromeOptions.w3c = false" \
+  config.json > config.json.tmp && mv config.json.tmp config.json
+  

Review comment:
       The whitespace on this empty line should be removed

##########
File path: traffic_portal/test/integration/PageObjects/ServersPage.po.ts
##########
@@ -138,23 +138,25 @@ export class ServersPage extends BasePage {
     await this.txtStatus.sendKeys(server.Status);
     await this.txtHostname.sendKeys(server.Hostname+this.randomize);
     await this.txtDomainName.sendKeys(server.Domainname);
-    await this.txtCDN.sendKeys(server.CDN);
-    await this.txtCacheGroup.sendKeys(server.CacheGroup);
+    await this.txtCDN.sendKeys("ALL");
+    await this.txtCDN.sendKeys(server.CDN + this.randomize);
+    await this.txtCacheGroup.sendKeys(server.CacheGroup + this.randomize);
     await this.txtType.sendKeys(server.Type);
-    await this.txtProfile.sendKeys(server.Profile);
+    await this.txtProfile.sendKeys(server.Profile + this.randomize);
     await this.txtPhysLocation.sendKeys(server.PhysLocation);
     await this.txtInterfaceName.sendKeys(server.InterfaceName);
     await 
element(by.id(""+server.InterfaceName+"-")).sendKeys(ipv6.toString());
-    await basePage.ClickCreate();
+    if (!await basePage.ClickCreate()) 

Review comment:
       This trailing space should be removed.

##########
File path: .github/workflows/tp.integration.tests.yml
##########
@@ -90,27 +92,33 @@ jobs:
     steps:
       - name: Checkout
         uses: actions/checkout@master
-      - name: Cache Alpine Docker image
-        uses: actions/cache@v2
-        with:
-          path: ${{ github.workspace }}/docker-images
-          key: docker-images/alpine@${{ env.ALPINE_VERSION }}.tar.gz
-      - name: Import cached Alpine Docker image
-        run: .github/actions/save-alpine-tar/entrypoint.sh load ${{ 
env.ALPINE_VERSION }}
-      - name: Cache node modules
-        uses: actions/cache@v2
-        with:
-          path: ~/.npm
-          key: ${{ runner.os }}-node-modules-${{ 
hashFiles('traffic_portal/package-lock.json traffic_portal/bower.json') }}
-          restore-keys: |
-            ${{ runner.os }}-node-modules-
+#      - name: Cache Alpine Docker image
+#        uses: actions/cache@v2
+#        with:
+#          path: ${{ github.workspace }}/docker-images
+#          key: docker-images/alpine@${{ env.ALPINE_VERSION }}.tar.gz
+#      - name: Import cached Alpine Docker image
+#        run: .github/actions/save-alpine-tar/entrypoint.sh load ${{ 
env.ALPINE_VERSION }}
+#      - name: Cache node modules
+#        uses: actions/cache@v2
+#        with:
+#          path: ~/.npm
+#          key: ${{ runner.os }}-node-modules-${{ 
hashFiles('traffic_portal/package-lock.json traffic_portal/bower.json') }}
+#          restore-keys: |
+#            ${{ runner.os }}-node-modules-

Review comment:
       Was the *Cache node modules* step making things fail? If not, it should 
be uncommented.

##########
File path: .github/actions/tp-integration-tests/entrypoint.sh
##########
@@ -141,82 +144,99 @@ start_traffic_vault &
 
 sudo apt-get install -y --no-install-recommends gettext \
        ruby ruby-dev libc-dev curl \
-       chromium-chromedriver postgresql-client \
        gcc musl-dev
 
-sudo gem update --system && sudo gem install sass compass
-sudo npm i -g protractor@^7.0.0 forever bower grunt selenium-webdriver
+sudo gem update --system && sudo gem install sass compass 
+sudo npm i -g forever bower grunt
 
-CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
-CHROME_VER=$(docker exec "$CONTAINER" google-chrome --version | sed -E 's/.* 
([0-9.]+).*/\1/')
-sudo webdriver-manager update --gecko false --versions.chrome 
"LATEST_RELEASE_$CHROME_VER"
+CHROME_CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
+HUB_CONTAINER=$(docker ps | grep "selenium/hub" | awk '{print $1}')
+CHROME_VER=$(docker exec "$CHROME_CONTAINER" google-chrome --version | sed -E 
's/.* ([0-9.]+).*/\1/')
 
 GOROOT=/usr/local/go
 export PATH="${PATH}:${GOROOT}/bin"
 download_go
 export GOPATH="${HOME}/go"
 readonly ORG_DIR="$GOPATH/src/github.com/apache"
 readonly REPO_DIR="${ORG_DIR}/trafficcontrol"
+resources="$(dirname "$0")"
 if [[ ! -e "$REPO_DIR" ]]; then
        mkdir -p "$ORG_DIR"
        cd
        mv "${GITHUB_WORKSPACE}" "${REPO_DIR}/"
        ln -s "$REPO_DIR" "${GITHUB_WORKSPACE}"
 fi
 
-cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+to_build() {
+  cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+  go mod vendor -v
+  go build . 

Review comment:
       There's trailing whitespace after `.`

##########
File path: traffic_portal/test/integration/config.ts
##########
@@ -27,59 +28,17 @@ let twoNumberRandomize = Math.floor(Math.random() * 101);
 exports.twoNumberRandomize = twoNumberRandomize;
 exports.randomize = randomize;
 
-export let config: Config = {
-  // The address of a running selenium server.
-  seleniumAddress: 'http://localhost:4444/wd/hub',
-  allScriptsTimeout: 200000,
-  // Capabilities to be passed to the webdriver instance.
-  capabilities: {
-    browserName: 'chrome',
-    //Parallelization Configuration (shardTestFiles and maxInstances)
-    shardTestFiles: false,
-    maxInstances: 1,
-    marionette: true,
-    acceptInsecureCerts: true,
-    acceptSslCerts: true,
-    chromeOptions: {
-      //Run protractor headlessly. Comment it out if user want to see the 
process.
-      args: ["--headless", "--no-sandbox", "--window-size=1920,1080"],
-      prefs: {
-        download: {
-          'prompt_for_download': false,
-          'default_directory': downloadsPath
-        }
-      }
-    }
-  },
-  specs: [
-    "specs/*.spec.js",
-  ],
-  // Options to be passed to Jasmine-node.
-  jasmineNodeOpts: {
-    showColors: true, // Use colors in the command line report.
-    defaultTimeoutInterval: 1000000,
-    random: false,
-    stopSpecOnExpectationFailure: true,
-  },
-
-  params: {
-    apiUrl: ' https://localhost:443/api/3.0',
-    baseUrl: 'https://localhost:443/',
-    login: {
-      username: 'admin',
-      password: 'twelve12'
-    }
-  },
-
-  onPrepare: async function () {
-    browser.waitForAngularEnabled(true);
+export let config: Config = conf;
+config.capabilities.chromeOptions.prefs.download.default_directory = 
downloadsPath;
+config.onPrepare = async function () {
+    await browser.waitForAngularEnabled(true);
 
     var fs = require('fs-extra');
 
     fs.emptyDir('./Reports/', function (err) {
       console.log(err);
     });
-
+    

Review comment:
       There are spaces on this empty line

##########
File path: .github/actions/tp-integration-tests/entrypoint.sh
##########
@@ -141,82 +144,99 @@ start_traffic_vault &
 
 sudo apt-get install -y --no-install-recommends gettext \
        ruby ruby-dev libc-dev curl \
-       chromium-chromedriver postgresql-client \
        gcc musl-dev
 
-sudo gem update --system && sudo gem install sass compass
-sudo npm i -g protractor@^7.0.0 forever bower grunt selenium-webdriver
+sudo gem update --system && sudo gem install sass compass 

Review comment:
       There's trailing whitespace after `compass`

##########
File path: .github/actions/tp-integration-tests/entrypoint.sh
##########
@@ -141,82 +144,99 @@ start_traffic_vault &
 
 sudo apt-get install -y --no-install-recommends gettext \
        ruby ruby-dev libc-dev curl \
-       chromium-chromedriver postgresql-client \
        gcc musl-dev
 
-sudo gem update --system && sudo gem install sass compass
-sudo npm i -g protractor@^7.0.0 forever bower grunt selenium-webdriver
+sudo gem update --system && sudo gem install sass compass 
+sudo npm i -g forever bower grunt
 
-CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
-CHROME_VER=$(docker exec "$CONTAINER" google-chrome --version | sed -E 's/.* 
([0-9.]+).*/\1/')
-sudo webdriver-manager update --gecko false --versions.chrome 
"LATEST_RELEASE_$CHROME_VER"
+CHROME_CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
+HUB_CONTAINER=$(docker ps | grep "selenium/hub" | awk '{print $1}')
+CHROME_VER=$(docker exec "$CHROME_CONTAINER" google-chrome --version | sed -E 
's/.* ([0-9.]+).*/\1/')
 
 GOROOT=/usr/local/go
 export PATH="${PATH}:${GOROOT}/bin"
 download_go
 export GOPATH="${HOME}/go"
 readonly ORG_DIR="$GOPATH/src/github.com/apache"
 readonly REPO_DIR="${ORG_DIR}/trafficcontrol"
+resources="$(dirname "$0")"
 if [[ ! -e "$REPO_DIR" ]]; then
        mkdir -p "$ORG_DIR"
        cd
        mv "${GITHUB_WORKSPACE}" "${REPO_DIR}/"
        ln -s "$REPO_DIR" "${GITHUB_WORKSPACE}"
 fi
 
-cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+to_build() {
+  cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+  go mod vendor -v
+  go build . 
+  

Review comment:
       The whitespace on this empty line should be removed

##########
File path: .github/workflows/tp.integration.tests.yml
##########
@@ -57,6 +57,8 @@ jobs:
         ports:
           - "4444:4444"
         options: --health-cmd=/opt/bin/check-grid.sh --health-interval=5s 
--health-timeout=15s --health-retries=5
+        env:
+          GRID_DEBUG: true

Review comment:
       Does this enable a debugger? Is there any benefit to leaving it in?

##########
File path: traffic_portal/test/integration/config.ts
##########
@@ -103,6 +62,5 @@ export let config: Config = {
     } catch (error) {
       throw error
     }
-  },
-  
-};
+}
+

Review comment:
       There is an extra space at the end of 
`traffic_portal/test/integration/config.ts`

##########
File path: traffic_portal/test/integration/README.md
##########
@@ -0,0 +1,30 @@
+# Traffic Portal Test Automation 

Review comment:
       Trailing space

##########
File path: .github/actions/tp-integration-tests/entrypoint.sh
##########
@@ -141,82 +144,99 @@ start_traffic_vault &
 
 sudo apt-get install -y --no-install-recommends gettext \
        ruby ruby-dev libc-dev curl \
-       chromium-chromedriver postgresql-client \
        gcc musl-dev
 
-sudo gem update --system && sudo gem install sass compass
-sudo npm i -g protractor@^7.0.0 forever bower grunt selenium-webdriver
+sudo gem update --system && sudo gem install sass compass 
+sudo npm i -g forever bower grunt
 
-CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
-CHROME_VER=$(docker exec "$CONTAINER" google-chrome --version | sed -E 's/.* 
([0-9.]+).*/\1/')
-sudo webdriver-manager update --gecko false --versions.chrome 
"LATEST_RELEASE_$CHROME_VER"
+CHROME_CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
+HUB_CONTAINER=$(docker ps | grep "selenium/hub" | awk '{print $1}')
+CHROME_VER=$(docker exec "$CHROME_CONTAINER" google-chrome --version | sed -E 
's/.* ([0-9.]+).*/\1/')
 
 GOROOT=/usr/local/go
 export PATH="${PATH}:${GOROOT}/bin"
 download_go
 export GOPATH="${HOME}/go"
 readonly ORG_DIR="$GOPATH/src/github.com/apache"
 readonly REPO_DIR="${ORG_DIR}/trafficcontrol"
+resources="$(dirname "$0")"
 if [[ ! -e "$REPO_DIR" ]]; then
        mkdir -p "$ORG_DIR"
        cd
        mv "${GITHUB_WORKSPACE}" "${REPO_DIR}/"
        ln -s "$REPO_DIR" "${GITHUB_WORKSPACE}"
 fi
 
-cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+to_build() {
+  cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+  go mod vendor -v
+  go build . 
+  
+  openssl req -new -x509 -nodes -newkey rsa:4096 -out localhost.crt -keyout 
localhost.key -subj "/CN=tptests";
+
+  envsubst <"${resources}/cdn.json" >cdn.conf
+  cp "${resources}/database.json" database.conf
+
+  export $(<"${ciab_dir}/variables.env" sed '/^#/d') # defines 
TV_ADMIN_USER/PASSWORD
+  envsubst <"${resources}/riak.json" >riak.conf
+  truncate --size=0 warning.log error.log event.log info.log 
+  

Review comment:
       There's whitespace on this empty line, too

##########
File path: .github/actions/tp-integration-tests/entrypoint.sh
##########
@@ -76,7 +79,7 @@ download_go() {
                return
        fi
        go_version="$(cat "${GITHUB_WORKSPACE}/GO_VERSION")"
-       wget -O go.tar.gz 
"https://dl.google.com/go/go${go_version}.linux-amd64.tar.gz"; --no-verbose
+       wget -O go.tar.gz 
"https://dl.google.com/go/go${go_version}.linux-amd64.tar.gz"; --no-verbose 

Review comment:
       There's trailing whitespace after `--no-verbose`

##########
File path: .github/actions/tp-integration-tests/dist/tp-integration-tests.js
##########
@@ -0,0 +1,32 @@
+/*

Review comment:
       Should this file have  been moved from `tp-e2e-tests.js`? 
`tp-e2e-tests.js` still exists

##########
File path: .github/actions/tp-integration-tests/entrypoint.sh
##########
@@ -141,82 +144,99 @@ start_traffic_vault &
 
 sudo apt-get install -y --no-install-recommends gettext \
        ruby ruby-dev libc-dev curl \
-       chromium-chromedriver postgresql-client \
        gcc musl-dev
 
-sudo gem update --system && sudo gem install sass compass
-sudo npm i -g protractor@^7.0.0 forever bower grunt selenium-webdriver
+sudo gem update --system && sudo gem install sass compass 
+sudo npm i -g forever bower grunt
 
-CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
-CHROME_VER=$(docker exec "$CONTAINER" google-chrome --version | sed -E 's/.* 
([0-9.]+).*/\1/')
-sudo webdriver-manager update --gecko false --versions.chrome 
"LATEST_RELEASE_$CHROME_VER"
+CHROME_CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
+HUB_CONTAINER=$(docker ps | grep "selenium/hub" | awk '{print $1}')
+CHROME_VER=$(docker exec "$CHROME_CONTAINER" google-chrome --version | sed -E 
's/.* ([0-9.]+).*/\1/')
 
 GOROOT=/usr/local/go
 export PATH="${PATH}:${GOROOT}/bin"
 download_go
 export GOPATH="${HOME}/go"
 readonly ORG_DIR="$GOPATH/src/github.com/apache"
 readonly REPO_DIR="${ORG_DIR}/trafficcontrol"
+resources="$(dirname "$0")"
 if [[ ! -e "$REPO_DIR" ]]; then
        mkdir -p "$ORG_DIR"
        cd
        mv "${GITHUB_WORKSPACE}" "${REPO_DIR}/"
        ln -s "$REPO_DIR" "${GITHUB_WORKSPACE}"
 fi
 
-cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+to_build() {
+  cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+  go mod vendor -v
+  go build . 
+  
+  openssl req -new -x509 -nodes -newkey rsa:4096 -out localhost.crt -keyout 
localhost.key -subj "/CN=tptests";
+
+  envsubst <"${resources}/cdn.json" >cdn.conf
+  cp "${resources}/database.json" database.conf
+
+  export $(<"${ciab_dir}/variables.env" sed '/^#/d') # defines 
TV_ADMIN_USER/PASSWORD
+  envsubst <"${resources}/riak.json" >riak.conf
+  truncate --size=0 warning.log error.log event.log info.log 
+  
+  ./traffic_ops_golang --cfg ./cdn.conf --dbcfg ./database.conf -riakcfg 
riak.conf &
+  tail -f warning.log 2>&1 | color_and_prefix "${yellow_bg}" 'Traffic Ops 
WARN' &
+  tail -f error.log 2>&1 | color_and_prefix "${red_bg}" 'Traffic Ops ERR' &
+  tail -f event.log 2>&1 | color_and_prefix "${gray_bg}" 'Traffic Ops EVT' &
+}
 
-go mod vendor -v > /dev/null
-go build . > /dev/null
- 
+tp_build() {
+  cd "${REPO_DIR}/traffic_portal"
+  npm ci
+  bower install
+  grunt dist
 
-openssl req -new -x509 -nodes -newkey rsa:4096 -out localhost.crt -keyout 
localhost.key -subj "/CN=tptests";
+  cp "${resources}/config.js" ./conf/
+  touch tp.log access.log out.log err.log
+  sudo forever --minUptime 5000 --spinSleepTime 2000 -f -o out.log start 
server.js &
+  tail -f err.log 2>&1 | color_and_prefix "${red_bg}" "Node Err" &
+}
 
-resources="$(dirname "$0")"
-envsubst <"${resources}/cdn.json" >cdn.conf
-cp "${resources}/database.json" database.conf
+(to_build) &
+(tp_build) &
 
-export $(<"${ciab_dir}/variables.env" sed '/^#/d') # defines 
TV_ADMIN_USER/PASSWORD
-envsubst <"${resources}/riak.json" >riak.conf
+onFail() {
+       docker logs "$trafficvault"  > Reports/traffic_vault.log
+  mv tp.log Reports/forever.log
+  mv access.log Reports/tp-access.log
+  mv out.log Reports/node.log
+  docker logs $CHROME_CONTAINER > Reports/chrome.log
+  docker logs $HUB_CONTAINER > Reports/hub.log
+  echo "Detailed logs produced info Reports artifact"
+  exit 1
+}
 
-truncate --size=0 warning.log error.log event.log # Removes output from 
previous API versions and makes sure files exist
-./traffic_ops_golang --cfg ./cdn.conf --dbcfg ./database.conf -riakcfg 
riak.conf &
-tail -f warning.log 2>&1 | color_and_prefix "${yellow_bg}" 'Traffic Ops' &
-tail -f error.log 2>&1 | color_and_prefix "${red_bg}" 'Traffic Ops' &
-tail -f event.log 2>&1 | color_and_prefix "${gray_bg}" 'Traffic Ops' &
 
-cd "../../traffic_portal"
+cd "${REPO_DIR}/traffic_portal/test/integration"
 npm ci
-bower install
-grunt dist
-
-cp "${resources}/config.js" ./conf/
-touch tp.log access.log
-sudo forever --minUptime 5000 --spinSleepTime 2000 -l ./tp.log start server.js 
&
-
-fqdn="https://localhost:8443";
-while ! curl -Lvsk "${fqdn}/api/3.0/ping" >/dev/null 2>&1; do
-  echo "waiting for TP/TO server to start on '${fqdn}'"
-  sleep 10
-done
+PATH=$(pwd)/node_modules/.bin/:$PATH
 
+webdriver-manager update --gecko false --versions.chrome 
"LATEST_RELEASE_$CHROME_VER"
 
-cd "test/end_to_end"
 jq " .capabilities.chromeOptions.args = [
-    \"--disable-extensions\",
-    \"--disable-gpu\",
     \"--headless\",
     \"--no-sandbox\",
+    \"--disable-gpu\",
     \"--ignore-certificate-errors\"
-  ] | .baseUrl = \"${fqdn}\" | del(.seleniumAddress)" \
-  conf.json > conf.json.tmp && mv conf.json.tmp conf.json
-
-onFail() {
-       docker logs "$trafficvault" 2>&1 |
-               color_and_prefix "$gray_bg" 'Traffic Vault';
-  cat tp.log | color_and_prefix "${gray_bg}" 'Forever'
-  cat access.log | color_and_prefix "${gray_bg}" 'Traffic Portal'
-  exit 1
-}
-
-sudo protractor ./conf.js || onFail
+  ] | .params.apiUrl = \"${tp_fqdn}/api/4.0\" | .params.baseUrl =\"${tp_fqdn}\"
+  | .capabilities[\"goog:chromeOptions\"].w3c = false | 
.capabilities.chromeOptions.w3c = false" \
+  config.json > config.json.tmp && mv config.json.tmp config.json
+  
+tsc
+
+# Wait for tp/to build
+timeout 5m bash <<TMOUT
+  while ! curl -Lvsk "${tp_fqdn}/api/4.0/ping" >/dev/null 2>&1; do
+    echo "waiting for TP/TO server to start on '${tp_fqdn}'"
+    sleep 10
+  done 

Review comment:
       There is trailing whitespace after `done`

##########
File path: traffic_portal/test/integration/CommonUtils/API.ts
##########
@@ -198,16 +200,19 @@ export class API {
                     for(var j = 0; j < data.Prerequisites[i].Data.length; j++){
                         let output = await 
this.SendRequest(data.Prerequisites[i].Route, data.Prerequisites[i].Method, 
data.Prerequisites[i].Data[j]);
                         if (output != null) {
-                            throw new Error(output)
+                            console.error(`UseAPI failed on Action 
${data.Prerequisites[i].Action} with index ${i}, and Data index ${j}`);
+                            throw new Error(output);
                         }
                     }
                 }
                 return null
+            } else if (response.status == undefined) {
+                throw new Error(`Error requesting ${config.params.apiUrl}: 
${response}`); 

Review comment:
       There is trailing whitespace after `;`

##########
File path: .github/actions/tp-integration-tests/entrypoint.sh
##########
@@ -141,82 +144,99 @@ start_traffic_vault &
 
 sudo apt-get install -y --no-install-recommends gettext \
        ruby ruby-dev libc-dev curl \
-       chromium-chromedriver postgresql-client \
        gcc musl-dev
 
-sudo gem update --system && sudo gem install sass compass
-sudo npm i -g protractor@^7.0.0 forever bower grunt selenium-webdriver
+sudo gem update --system && sudo gem install sass compass 
+sudo npm i -g forever bower grunt
 
-CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
-CHROME_VER=$(docker exec "$CONTAINER" google-chrome --version | sed -E 's/.* 
([0-9.]+).*/\1/')
-sudo webdriver-manager update --gecko false --versions.chrome 
"LATEST_RELEASE_$CHROME_VER"
+CHROME_CONTAINER=$(docker ps | grep "selenium/node-chrome" | awk '{print $1}')
+HUB_CONTAINER=$(docker ps | grep "selenium/hub" | awk '{print $1}')
+CHROME_VER=$(docker exec "$CHROME_CONTAINER" google-chrome --version | sed -E 
's/.* ([0-9.]+).*/\1/')
 
 GOROOT=/usr/local/go
 export PATH="${PATH}:${GOROOT}/bin"
 download_go
 export GOPATH="${HOME}/go"
 readonly ORG_DIR="$GOPATH/src/github.com/apache"
 readonly REPO_DIR="${ORG_DIR}/trafficcontrol"
+resources="$(dirname "$0")"
 if [[ ! -e "$REPO_DIR" ]]; then
        mkdir -p "$ORG_DIR"
        cd
        mv "${GITHUB_WORKSPACE}" "${REPO_DIR}/"
        ln -s "$REPO_DIR" "${GITHUB_WORKSPACE}"
 fi
 
-cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+to_build() {
+  cd "${REPO_DIR}/traffic_ops/traffic_ops_golang"
+  go mod vendor -v
+  go build . 
+  
+  openssl req -new -x509 -nodes -newkey rsa:4096 -out localhost.crt -keyout 
localhost.key -subj "/CN=tptests";
+
+  envsubst <"${resources}/cdn.json" >cdn.conf
+  cp "${resources}/database.json" database.conf
+
+  export $(<"${ciab_dir}/variables.env" sed '/^#/d') # defines 
TV_ADMIN_USER/PASSWORD
+  envsubst <"${resources}/riak.json" >riak.conf
+  truncate --size=0 warning.log error.log event.log info.log 
+  
+  ./traffic_ops_golang --cfg ./cdn.conf --dbcfg ./database.conf -riakcfg 
riak.conf &
+  tail -f warning.log 2>&1 | color_and_prefix "${yellow_bg}" 'Traffic Ops 
WARN' &
+  tail -f error.log 2>&1 | color_and_prefix "${red_bg}" 'Traffic Ops ERR' &
+  tail -f event.log 2>&1 | color_and_prefix "${gray_bg}" 'Traffic Ops EVT' &
+}
 
-go mod vendor -v > /dev/null
-go build . > /dev/null
- 
+tp_build() {
+  cd "${REPO_DIR}/traffic_portal"
+  npm ci
+  bower install
+  grunt dist
 
-openssl req -new -x509 -nodes -newkey rsa:4096 -out localhost.crt -keyout 
localhost.key -subj "/CN=tptests";
+  cp "${resources}/config.js" ./conf/
+  touch tp.log access.log out.log err.log
+  sudo forever --minUptime 5000 --spinSleepTime 2000 -f -o out.log start 
server.js &
+  tail -f err.log 2>&1 | color_and_prefix "${red_bg}" "Node Err" &
+}
 
-resources="$(dirname "$0")"
-envsubst <"${resources}/cdn.json" >cdn.conf
-cp "${resources}/database.json" database.conf
+(to_build) &
+(tp_build) &
 
-export $(<"${ciab_dir}/variables.env" sed '/^#/d') # defines 
TV_ADMIN_USER/PASSWORD
-envsubst <"${resources}/riak.json" >riak.conf
+onFail() {
+       docker logs "$trafficvault"  > Reports/traffic_vault.log
+  mv tp.log Reports/forever.log
+  mv access.log Reports/tp-access.log
+  mv out.log Reports/node.log
+  docker logs $CHROME_CONTAINER > Reports/chrome.log
+  docker logs $HUB_CONTAINER > Reports/hub.log
+  echo "Detailed logs produced info Reports artifact"
+  exit 1
+}
 
-truncate --size=0 warning.log error.log event.log # Removes output from 
previous API versions and makes sure files exist
-./traffic_ops_golang --cfg ./cdn.conf --dbcfg ./database.conf -riakcfg 
riak.conf &
-tail -f warning.log 2>&1 | color_and_prefix "${yellow_bg}" 'Traffic Ops' &
-tail -f error.log 2>&1 | color_and_prefix "${red_bg}" 'Traffic Ops' &
-tail -f event.log 2>&1 | color_and_prefix "${gray_bg}" 'Traffic Ops' &
 
-cd "../../traffic_portal"
+cd "${REPO_DIR}/traffic_portal/test/integration"
 npm ci
-bower install
-grunt dist
-
-cp "${resources}/config.js" ./conf/
-touch tp.log access.log
-sudo forever --minUptime 5000 --spinSleepTime 2000 -l ./tp.log start server.js 
&
-
-fqdn="https://localhost:8443";
-while ! curl -Lvsk "${fqdn}/api/3.0/ping" >/dev/null 2>&1; do
-  echo "waiting for TP/TO server to start on '${fqdn}'"
-  sleep 10
-done
+PATH=$(pwd)/node_modules/.bin/:$PATH
 
+webdriver-manager update --gecko false --versions.chrome 
"LATEST_RELEASE_$CHROME_VER"
 
-cd "test/end_to_end"
 jq " .capabilities.chromeOptions.args = [
-    \"--disable-extensions\",
-    \"--disable-gpu\",
     \"--headless\",
     \"--no-sandbox\",
+    \"--disable-gpu\",
     \"--ignore-certificate-errors\"
-  ] | .baseUrl = \"${fqdn}\" | del(.seleniumAddress)" \
-  conf.json > conf.json.tmp && mv conf.json.tmp conf.json
-
-onFail() {
-       docker logs "$trafficvault" 2>&1 |
-               color_and_prefix "$gray_bg" 'Traffic Vault';
-  cat tp.log | color_and_prefix "${gray_bg}" 'Forever'
-  cat access.log | color_and_prefix "${gray_bg}" 'Traffic Portal'
-  exit 1
-}
-
-sudo protractor ./conf.js || onFail
+  ] | .params.apiUrl = \"${tp_fqdn}/api/4.0\" | .params.baseUrl =\"${tp_fqdn}\"
+  | .capabilities[\"goog:chromeOptions\"].w3c = false | 
.capabilities.chromeOptions.w3c = false" \
+  config.json > config.json.tmp && mv config.json.tmp config.json
+  
+tsc
+
+# Wait for tp/to build
+timeout 5m bash <<TMOUT
+  while ! curl -Lvsk "${tp_fqdn}/api/4.0/ping" >/dev/null 2>&1; do
+    echo "waiting for TP/TO server to start on '${tp_fqdn}'"
+    sleep 10
+  done 
+TMOUT

Review comment:
       If this command times out, can we fail early instead of running the 
tests?




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to