Switch to side-by-side view

--- a
+++ b/.github/workflows/ci-pytest.yml
@@ -0,0 +1,56 @@
+name: ci-pytest
+
+on:
+  push:
+    branches:
+      - master
+  pull_request:
+    branches:
+      - master
+  workflow_dispatch:
+
+env:
+  # Updates or changes to this, or the runner OS or arch will invalidate the cache
+  python_version: "3.12" # Python version to use for testing - update when needed
+
+jobs:
+  test:
+    runs-on: ubuntu-22.04
+    # Default shell needs to be bash for conda
+    # https://github.com/conda-incubator/setup-miniconda?tab=readme-ov-file#important
+    defaults:
+      run:
+        shell: bash -el {0}
+    steps:
+      - name: Setup Miniconda
+        uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1, devs recommend using hash
+        with:
+          miniforge-version: latest
+          python-version: ${{ env.python_version }}
+          auto-update-conda: true
+          activate-environment: "test-env"
+
+      - name: Checkout code
+        uses: actions/checkout@v4 # Checkout PR code to 'antspy-pr'
+        with:
+          path: antspy-pr
+
+      - name: Install dependencies and ANTsPy from PR
+        run: |
+          conda info
+          conda create -n antspy-env python=${{ env.python_version }} -y
+          conda activate antspy-env
+          conda install coverage
+          conda info
+          pip install ./antspy-pr
+          conda list
+
+      - name: Run tests
+        run: |
+          conda activate antspy-env
+          bash antspy-pr/tests/run_tests.sh -c
+
+      - name: Coveralls
+        uses: coverallsapp/github-action@v2
+        with:
+          files: antspy-pr/tests/coverage.xml