name: ๐Ÿ–ผ Visual Tests on: push: pull_request: jobs: visual_tests: name: ๐Ÿ–ผ Visual Tests with ${{ matrix.render-driver }} runs-on: ubuntu-latest # Only run the workflow if it's not a PR or if it's a PR from a fork. # This prevents duplicate workflows from running on PR's that originate # from the repository itself. if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name env: DOTNET_CLI_TELEMETRY_OPTOUT: true DOTNET_NOLOGO: true strategy: # Don't cancel other runners if one fails. fail-fast: false matrix: # Put the rendering drivers you want to use for tests here. render-driver: [vulkan] # also: opengl3 defaults: run: # Use bash shells on all platforms. shell: bash steps: - name: ๐Ÿงพ Checkout uses: actions/checkout@v6 with: # If using git-lfs (large file storage), this ensures that your files # are checked out properly. lfs: true # Make sure any git submodules are checked out as well. submodules: 'recursive' - name: ๐Ÿ’ฝ Setup .NET SDK uses: actions/setup-dotnet@v5 with: # Use the .NET SDK from global.json in the root of the repository. global-json-file: global.json - name: ๐Ÿ“ฆ Restore Dependencies run: dotnet restore - name: ๐Ÿ’พ Add Graphics Driver Emulators Source run: | sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list sudo add-apt-repository -n ppa:kisak/kisak-mesa - name: ๐Ÿ’พ Install Graphics Driver Emulators uses: awalsh128/cache-apt-pkgs-action@latest with: packages: mesa-vulkan-drivers binutils x11-xserver-utils version: 1.0 - name: ๐Ÿค– Setup Godot uses: chickensoft-games/setup-godot@v2 with: # Version must include major, minor, and patch, and be >= 4.0.0 # Pre-release label is optional. # # In this case, we are using the version from global.json. # # This allows checks on renovatebot PR's to succeed whenever # renovatebot updates the Godot SDK version. version: global.json - name: ๐Ÿง‘โ€๐Ÿ”ฌ Generate .NET Bindings run: godot --headless --build-solutions --quit || exit 0 - name: ๐ŸŒ‹ Run Tests in Godot run: | xvfb-run godot --audio-driver Dummy --rendering-driver ${{ matrix.render-driver }} --run-tests --quit-on-finish # The --coverage flag is used by GoDotTest to control the exit code # of Godot by force-exiting through C#. # # Since Godot sometimes exits with non-zero exit codes (even on success), # adding this flag to the above command may allow GoDotTest to ensure that # this step will only fail when the tests fail, and not because Godot didn't # exit cleanly. # # However, note that the --coverage flag can sometimes cause other failures # by forcing Godot to exit before it can clean up its resources completely. echo "Finished running tests in Godot with emulated ${{ matrix.render-driver }} graphics."