Run tests #2633
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run tests | |
on: | |
push: | |
branches: | |
- 'main' | |
- 'release/**' | |
pull_request: | |
workflow_dispatch: | |
env: | |
DOTVVM_ROOT: ${{ github.workspace }} | |
DOTNET_NOLOGO: 1 | |
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1 | |
DOTNET_CLI_TELEMETRY_OPTOUT: 1 | |
jobs: | |
build-published: | |
name: Build published projects without warnings | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
configuration: [Release, Debug] | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up | |
uses: ./.github/setup | |
with: | |
sln: src/DotVVM.Crossplatform.slnf | |
# no reason to Spam with warnings when normal build fails | |
- name: Build Framework (without /WarnAsError) | |
run: dotnet build src/Framework/Framework --configuration ${{ matrix.configuration }} --no-restore --no-incremental /property:WarningLevel=0 | |
# framework | |
- name: Core | |
run: dotnet build src/Framework/Framework --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
- name: Framework | |
run: dotnet build src/Framework/Framework --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
- name: Testing | |
run: dotnet build src/Framework/Testing --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
# hosting | |
- name: Hosting.AspNetCore | |
run: dotnet build src/Framework/Hosting.AspNetCore --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
# command-line | |
- name: CommandLine | |
run: dotnet build src/Tools/CommandLine --configuration ${{ matrix.configuration }} --no-restore --framework netcoreapp3.1 /WarnAsError | |
# swashbuckle | |
- name: Api.Swashbuckle.AspNetCore | |
run: dotnet build src/Api/Swashbuckle.AspNetCore --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
# hot reload | |
- name: HotReload.Common | |
run: dotnet build src/Tools/HotReload/Common --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
- name: HotReload.AspNetCore | |
run: dotnet build src/Tools/HotReload/AspNetCore --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
# application insights | |
- name: Tracing.ApplicationInsights | |
run: dotnet build src/Tracing/ApplicationInsights --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
- name: Tracing.ApplicationInsights.AspNetCore | |
run: dotnet build src/Tracing/ApplicationInsights.AspNetCore --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
# miniprofiler | |
- name: Tracing.MiniProfiler.AspNetCore | |
run: dotnet build src/Tracing/MiniProfiler.AspNetCore --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
# dynamic data | |
- name: DynamicData | |
run: dotnet build src/DynamicData/DynamicData --configuration ${{ matrix.configuration }} --no-restore --no-incremental --framework net6.0 /WarnAsError | |
build-all: | |
name: Build all projects without errors | |
runs-on: windows-2022 | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up | |
uses: ./.github/setup | |
- name: MSBuild build | |
run: msbuild src/DotVVM.sln -v:m -t:Clean,Build -p:Configuration=Release -p:WarningLevel=0 | |
dotnet-unit-tests: | |
name: .NET unit tests | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 20 | |
strategy: | |
fail-fast: false # don't kill tests when one environment fails | |
matrix: | |
os: [ubuntu-latest, windows-2022, macOS-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up | |
uses: ./.github/setup | |
with: | |
sln: src/DotVVM.Crossplatform.slnf | |
- name: Tests (net6.0) | |
uses: ./.github/unittest | |
with: | |
project: src/Tests | |
name: framework-tests | |
title: Framework Tests | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
target-framework: net6.0 | |
# - name: Tests (net7.0) | |
# uses: ./.github/unittest | |
# with: | |
# project: src/Tests | |
# name: framework-tests | |
# title: Framework Tests | |
# github-token: ${{ secrets.GITHUB_TOKEN }} | |
# target-framework: net7.0 | |
- name: Analyzers.Tests (net6.0) | |
uses: ./.github/unittest | |
with: | |
project: src/Analyzers/Analyzers.Tests | |
name: analyzers-tests | |
title: Analyzer Tests | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
target-framework: net6.0 | |
# - name: Analyzers.Tests (net7.0) | |
# uses: ./.github/unittest | |
# with: | |
# project: src/Analyzers/Analyzers.Tests | |
# name: analyzers-tests | |
# title: Analyzer Tests | |
# github-token: ${{ secrets.GITHUB_TOKEN }} | |
# target-framework: net7.0 | |
- name: Adapters.WebForms.Tests (net472) | |
uses: ./.github/unittest | |
if: matrix.os == 'windows-2022' | |
with: | |
project: src/Adapters/Tests/WebForms | |
name: webforms-adapters-tests | |
title: WebForms Adapter Tests | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
target-framework: net472 | |
js-tests: | |
runs-on: ubuntu-latest | |
name: JS unit tests | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v3 | |
# Node.js | |
- uses: actions/setup-node@v2 | |
with: | |
node-version: 16 | |
- run: | | |
corepack enable | |
yarn set version stable | |
shell: bash | |
- name: yarn install | |
run: yarn install --immutable | |
working-directory: src/Framework/Framework/ | |
- name: TypeScript check | |
run: yarn tsc-check | |
working-directory: src/Framework/Framework/ | |
- name: yarn jest | |
run: yarn jest --ci --reporters=default --reporters=jest-github-actions-reporter | |
working-directory: src/Framework/Framework/ | |
ui-tests: | |
name: UI tests | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 50 | |
strategy: | |
fail-fast: false # don't kill tests when one environment fails | |
matrix: | |
# specify only one config, all other configurations are included explicitly | |
browser: [chrome] | |
os: [ubuntu-latest] | |
environment: [Production] | |
samples-config: [Default] | |
include: | |
- browser: chrome | |
os: windows-2022 | |
environment: Development | |
samples-config: Default | |
- browser: firefox | |
os: ubuntu-latest | |
environment: Development | |
samples-config: Default | |
- browser: firefox | |
os: ubuntu-latest | |
environment: Production | |
samples-config: Default | |
- browser: firefox | |
os: ubuntu-latest | |
environment: Development | |
samples-config: ExperimentalFeaturesTests | |
- browser: chrome | |
os: ubuntu-latest | |
environment: Production | |
samples-config: ExperimentalFeaturesTests | |
env: | |
SLN: "${{ matrix.os == 'windows-2022' && 'src/DotVVM.sln' || 'src/DotVVM.Crossplatform.slnf' }}" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up | |
uses: ./.github/setup | |
with: | |
sln: ${{ env.SLN }} | |
- name: Run UI tests | |
uses: ./.github/uitest | |
with: | |
browser: ${{ matrix.browser }} | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
build-configuration: "${{ matrix.environment == 'Production' && 'Release' || 'Debug' }}" | |
runtime-environment: "${{ matrix.environment }}" | |
samples-config: "${{ matrix.samples-config }}" |