YunaBraska / github-workflow-plugin

Your Ultimate Wingman for GitHub Workflows and Actions! 🚀
https://github.com/YunaBraska/github-workflow-plugin
Apache License 2.0
45 stars 10 forks source link

In run-ui-tests.yml #10

Closed Jonatha1983 closed 1 year ago

Jonatha1983 commented 1 year ago

Description

Nullpointer exception.

Steps to Reproduce

I attached my workflow file

# 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)
YunaBraska commented 1 year ago

THX, I will have a look

YunaBraska commented 1 year ago

I couldn't reproduce this, but I added a null check just in case. Will be fixed on the next release