# GitHub Actions Workflow for launching UI tests on Linux, Windows, and Mac in the following steps:
# - prepare and launch IDE with your plugin and robot-server plugin, which is needed to interact with UI
# - wait for IDE to start
# - run UI tests with separate Gradle task
#
# Please check https://github.com/JetBrains/intellij-ui-test-robot for information about UI tests with IntelliJ Platform
#
# Workflow is triggered manually.
name: Run UI Tests
on:
workflow_dispatch:
push:
branches:
- main
jobs:
testUI:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
runIde: |
export DISPLAY=:99.0
Xvfb -ac :99 -screen 0 1920x1080x16 &
gradle runIdeForUiTests &
# - os: windows-latest
# runIde: start gradlew.bat runIdeForUiTests
- os: macos-latest
runIde: ./gradlew runIdeForUiTests &
steps:
# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v3
# Setup Java environment for the next steps
- name: Setup Java
uses: actions/setup-java@v3.10.0
with:
distribution: zulu
java-version: 17
# Setup Gradle
- name: Setup Gradle
uses: gradle/gradle-build-action@v2.7.0
- name: Set SSH
uses: webfactory/ssh-agent@v0.8.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Set Git user
run: |
git config --global user.name "Jonathan Gafner"
git config --global user.email "jgafner@dorkag.com"
# Run IDEA prepared for UI testing
- name: Run IDE
run: ${{ matrix.runIde }}
# Wait for IDEA to be started
- name: Health Check
uses: jtalk/url-health-check-action@v3
with:
url: http://127.0.0.1:8082
max-attempts: 15
retry-delay: 30s
# Run tests
- name: Tests
env:
AZD_TOKEN: ${{ secrets.AZD_TOKEN }}
run: ./gradlew check -PrunUiTests=true
# Collect Tests Result of failed tests
- name: Collect Tests Result
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: tests-result-${{ matrix.os }}
path: ${{ github.workspace }}/build/reports
- name: Save Coverage Report
uses: actions/upload-artifact@v3
with:
name: coverage-${{ matrix.os }}
path: ${{ github.workspace }}/build/reports/kover/report.xml
aggregateCoverage:
needs: testUI
runs-on: ubuntu-latest
steps:
# Download coverage reports from each OS run
- name: Download Coverage from Ubuntu
uses: actions/download-artifact@v3
with:
name: coverage-ubuntu-latest
path: coverage-reports/ubuntu-latest/
# Uncomment if you add windows to the matrix in the future
# - name: Download Coverage from Windows
# uses: actions/download-artifact@v3
# with:
# name: coverage-windows-latest
# path: coverage-reports/windows-latest/
- name: Download Coverage from MacOS
uses: actions/download-artifact@v3
with:
name: coverage-macos-latest
path: coverage-reports/macos-latest/
# Upload all coverage reports to codecov
- name: Upload Aggregate Code Coverage Report
uses: codecov/codecov-action@v3
with:
directory: coverage-reports/
flags: integration
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
Message
*** exception class was changed or removed
Runtime Information
Plugin version : 2.2.2
IDE: IntelliJ IDEA 2023.2 (IU-232.8660.185)
OS: macOS 13.4.1
Stacktrace
In file: file:///Users/jonathangafner/IdeaProjects/azd4/.github/workflows/run-ui-tests.yml
java.lang.NullPointerException: Cannot invoke "Object.hashCode()" because "key" is null
at java.base/java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
at com.github.yunabraska.githubworkflow.highlights.HighlightAnnotator.lambda$annotate$23(HighlightAnnotator.java:90)
at java.base/java.util.Optional.ifPresent(Optional.java:178)
at com.github.yunabraska.githubworkflow.highlights.HighlightAnnotator.annotate(HighlightAnnotator.java:54)
at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.runAnnotators(DefaultHighlightVisitor.java:130)
at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.visit(DefaultHighlightVisitor.java:107)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.runVisitors(GeneralHighlightingPass.java:360)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.lambda$collectHighlights$7(GeneralHighlightingPass.java:291)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:320)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.lambda$analyzeByVisitors$8(GeneralHighlightingPass.java:323)
at com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor.analyze(DefaultHighlightVisitor.java:92)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.analyzeByVisitors(GeneralHighlightingPass.java:323)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.collectHighlights(GeneralHighlightingPass.java:286)
at com.intellij.codeInsight.daemon.impl.GeneralHighlightingPass.collectInformationWithProgress(GeneralHighlightingPass.java:234)
at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:95)
at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:57)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$1(PassExecutorService.java:390)
at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.runWithSpanIgnoreThrows(trace.kt:77)
at com.intellij.platform.diagnostic.telemetry.helpers.TraceUtil.runWithSpanThrows(TraceUtil.java:24)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:386)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1133)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$3(PassExecutorService.java:377)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:376)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:352)
at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:201)
at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:207)
at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:350)
at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:185)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Description
Nullpointer exception.
Steps to Reproduce
I attached my workflow file
Message
*** exception class was changed or removed
Runtime Information
Plugin version : 2.2.2 IDE: IntelliJ IDEA 2023.2 (IU-232.8660.185) OS: macOS 13.4.1
Stacktrace