Skip to content

Tests In Browser|API|Marketplace #63

Tests In Browser|API|Marketplace

Tests In Browser|API|Marketplace #63

# This workflow will build and run In Browser Selenium Web Driver Tests
#
# For more samples to get started with GitHub Action workflows to deploy to Azure, refer to https://github.com/Azure/actions-workflow-samples
name: Test|In Browser|Marketplace
on:
#manually trigger deploy
workflow_dispatch:
# Trigger the workflow on push
#push:
# branches:
# - develop
# - main
#pull_request:
# branches:
# - develop
# - main
env:
# set this to the path to your solution file
SOLUTION_DIRECTORY: './'
# Solution file name
SOLUTION_FILE: 'CESMII.Marketplace.sln'
# Set this to the path to your test project file
PROJECT_DIRECTORY: './api/Tests/CESMII.Marketplace.InBrowser.Tests/'
# Test project file to use
PROJECT_NAME: 'CESMII.Marketplace.InBrowser.Tests'
# set this to the .NET core version to use
NETCORE_VERSION: "6.0.x"
# set this to the NODE JS version to use
NODEJS_VERSION: "16.17.0"
# set this to npm working directory
NPM_WORKING_DIRECTORY: 'frontend'
# Cloud Library Password
CLOUDLIB_PASSWORD: 'testpw'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: CloudLib - Start PostgreSQL on Ubuntu
run: |
sudo systemctl start postgresql.service
pg_isready
- name: CloudLib - Create additional Postgres user
run: |
sudo -u postgres psql --command="CREATE USER testuser SUPERUSER PASSWORD 'password'" --command="\du"
- name: CloudLib - Create test database with proper collation
run: |
sudo -u postgres psql --command="create database cloudlib_test with LC_COLLATE = 'en_US.UTF8' LC_CTYPE = 'en_US.UTF8' TEMPLATE template0"
- name: CloudLib - List existing databases
run: |
sudo -u postgres psql -l --command="\du"
- name: 🤘 CloudLib - checkout repo
uses: actions/checkout@v2
with:
repository: cesmii/CESMII-CloudLibrary
path: main
fetch-depth: 0
- name: ⚙ CloudLib -Install DotNet (version 6.0.x)
uses: actions/setup-dotnet@v1
with:
dotnet-version: '6.0.x'
- name: CloudLib - Restore dependencies in UACloudLibraryServer
working-directory: ./main/UACloudLibraryServer
run: dotnet restore
- name: CloudLib - Restore dependencies Opc.Ua.CloudLib.Client
run: dotnet restore
working-directory: ./main/Opc.Ua.CloudLib.Client
- name: CloudLib - Restore dependencies SampleConsoleClient
run: dotnet restore
working-directory: ./main/SampleConsoleClient
- name: CloudLib - Restore dependencies CloudLibClientTests
run: dotnet restore
working-directory: ./main/Tests/CloudLibClientTests
- name: CloudLib - Restore dependencies CloudLibSync
working-directory: ./main/CloudLibSync
run: dotnet restore
- name: CloudLib - Restore dependencies CloudLibSyncAzureFunction
working-directory: ./main/CloudLibSyncAzureFunction
run: dotnet restore
- name: CloudLib - Build
run: dotnet build ./main/UA-CloudLibrary.sln --configuration Release --no-restore
- name: CloudLib - Start up UA Cloud Library Server
env:
ServicePassword: ${{env.CLOUDLIB_PASSWORD}}
# Connection string for PostgreSQL from Cloud Library
CloudLibraryPostgreSQL: 'Server=localhost;Username=testuser;Database=cloudlib_test;Port=5432;Password=password;SSLMode=Prefer;Include Error Detail=true'
run: |
dotnet ./main/UACloudLibraryServer/bin/Release/net6.0/UA-CloudLibrary.dll &
# This takes over 10 minutes to run.
- name: CloudLib - Test
run: dotnet test ./main/UA-CloudLibrary.sln --no-build --configuration Release --verbosity normal -l:"console;verbosity=normal"
- name: List databases after test run
run: |
sudo -u postgres psql -l --command="\du"
- name: Marketplace API - Check out the repo
uses: actions/checkout@v2
with:
submodules: true
- name: Marketplace API - Set up dotnet core ${{ env.NETCORE_VERSION }}
uses: actions/setup-dotnet@v1
with:
dotnet-version: ${{ env.NETCORE_VERSION }}
- name: Marketplace API - Restore dependencies (${{env.SOLUTION_FILE}})
run: dotnet restore ${{env.SOLUTION_FILE}}
working-directory: ${{env.SOLUTION_DIRECTORY}}
- name: Marketplace API - Build (${{env.SOLUTION_FILE}})
run: dotnet build ${{env.SOLUTION_FILE}} --configuration Release --no-restore
- name: Marketplace API - Start up Marketplace Server
env:
DBCONN: ${{ secrets.MONGODB_CONNECTION }}
SERVICEPASSWORD: ${{env.CLOUDLIB_PASSWORD}}
run: |
./api/CESMII.Marketplace.API/bin/Release/net6.0/CESMII.Marketplace.API $DBCONN $SERVICEPASSWORD &
- name: FrontEnd - Setup chrome driver
uses: browser-actions/setup-chrome@latest
- name: FrontEnd - Start browser and fetch version
run: chrome --version
- name: FrontEnd - Use Node.js version (${{env.NODEJS_VERSION}})
uses: actions/setup-node@v1
with:
node-version: ${{env.NODEJS_VERSION}}
- name: FrontEnd - Build React Code - npm install, build
working-directory: ${{env.NPM_WORKING_DIRECTORY}}
env:
CI: '' #when process-env-ci is true, warnings are ignored and not treated as errors
run: |
npm install
npm run build:in-browser-test
npm run start-in-browser-test &
- name: In-Browser Testing - Restore dependencies CESMII.Marketplace.InBrowser.Tests
working-directory: ${{env.SOLUTION_DIRECTORY}}
run: dotnet restore
- name: In-Browser Testing - Run Test on project (${{env.PROJECT_NAME}})
run: dotnet test ${{env.SOLUTION_DIRECTORY}}api/Tests/CESMII.Marketplace.InBrowser.Tests/${{env.PROJECT_NAME}}.csproj --configuration Staging --verbosity normal -l:"console;verbosity=normal"
working-directory: ${{env.SOLUTION_DIRECTORY}}