Skip to content

Commit

Permalink
Merge branch 'phoenixframework:main' into feature/allow-redirect-status
Browse files Browse the repository at this point in the history
  • Loading branch information
coladarci authored Sep 6, 2024
2 parents f32b3d2 + 5abb0fc commit 9460ce9
Show file tree
Hide file tree
Showing 145 changed files with 8,908 additions and 5,071 deletions.
168 changes: 131 additions & 37 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,13 @@ jobs:

- elixir: 1.15.4
otp: 25.3
lint: lint

- elixir: 1.15.5
otp: 26.0
- elixir: 1.16.3
otp: 26.2

# update coverage report as well
- elixir: 1.17.2
otp: 27.0
lint: lint

runs-on: ubuntu-latest
Expand All @@ -32,7 +35,7 @@ jobs:
sudo apt update
sudo apt install -y inotify-tools
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Set up Elixir
uses: erlef/setup-beam@v1
Expand All @@ -41,7 +44,7 @@ jobs:
otp-version: ${{ matrix.otp }}

- name: Restore deps and _build cache
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: |
deps
Expand All @@ -53,10 +56,6 @@ jobs:
- name: Install dependencies
run: mix deps.get --only test

#- name: Check source code format
# run: mix format --check-formatted
# if: ${{ matrix.lint }}

- name: Remove compiled application files
run: mix clean

Expand All @@ -72,22 +71,35 @@ jobs:
env:
MIX_ENV: test

- name: Check if formatted
run: mix format --check-formatted
if: ${{ matrix.lint }}
env:
MIX_ENV: test

- name: Run tests
run: mix test
run: mix test --cover --export-coverage default

- uses: actions/upload-artifact@v4
if: always()
with:
name: mix-test-coverage-${{ matrix.otp }}-${{ matrix.elixir }}
path: cover/default.coverdata
retention-days: 7

npm_test:
name: npm test

strategy:
matrix:
include:
- elixir: 1.13.2
otp: 24.2
- elixir: 1.17.2
otp: 27.0

runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Set up Elixir
uses: erlef/setup-beam@v1
Expand All @@ -96,7 +108,7 @@ jobs:
otp-version: ${{ matrix.otp }}

- name: Restore deps and _build cache
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: |
deps
Expand All @@ -108,43 +120,47 @@ jobs:
- name: Install dependencies
run: mix deps.get --only test

- name: Set up Node.js 18.x
uses: actions/setup-node@v1
- name: Set up Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 18.x
node-version: 20.x

- name: Restore npm cache
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: npm install and test
run: |
cd assets
npm install
npm test
run: npm run js:test

- uses: actions/upload-artifact@v4
if: always()
with:
name: js-unit-coverage
path: assets/coverage/
retention-days: 7

e2e_test:
name: e2e test

strategy:
matrix:
include:
- elixir: 1.16.0
otp: 26.2
- elixir: 1.17.2
otp: 27.0

runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:v1.41.0-jammy
image: mcr.microsoft.com/playwright:v1.46.1-jammy
env:
ImageOS: ubuntu22
HOME: /root
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: install unzip
run: apt update && apt -y install unzip
Expand All @@ -156,7 +172,7 @@ jobs:
otp-version: ${{ matrix.otp }}

- name: Restore deps and _build cache
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: |
deps
Expand All @@ -169,27 +185,105 @@ jobs:
run: mix deps.get

- name: Restore npm cache
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: npm install (assets)
run: cd assets && npm install && cd ..

- name: Build assets
run: mix assets.build
- name: setup
run: npm run setup

- name: Run e2e tests
run: |
npm install
npm run e2e:test
run: npm run e2e:test

- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 7

- uses: actions/upload-artifact@v4
if: always()
with:
name: e2e-test-results
path: test/e2e/test-results/
retention-days: 7

- uses: actions/upload-artifact@v4
if: always()
with:
name: mix-e2e-coverage
path: cover/e2e.coverdata
retention-days: 7

coverage_report:
name: coverage report

runs-on: ubuntu-latest
needs: [mix_test, npm_test, e2e_test]

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Elixir
uses: erlef/setup-beam@v1
with:
elixir-version: 1.17.2
otp-version: 27.0

- name: Download mix unit coverage
uses: actions/download-artifact@v4
with:
# This needs to be updated when changing the test matrix
name: mix-test-coverage-27-1.17.2
path: cover/

- name: Download mix e2e coverage
uses: actions/download-artifact@v4
with:
name: mix-e2e-coverage
path: cover/

- name: Restore deps and _build cache
uses: actions/cache@v4
with:
path: |
deps
_build
key: deps-${{ runner.os }}-27-1.17.2-${{ hashFiles('**/mix.lock') }}
restore-keys: |
deps-${{ runner.os }}-27-1.17.2
- name: Generate mix coverage report
run: mix test.coverage

- name: Download js-unit-coverage artifact
uses: actions/download-artifact@v4
with:
name: js-unit-coverage
path: assets/coverage/

- name: Download e2e-test-results artifact
uses: actions/download-artifact@v4
with:
name: e2e-test-results
path: test/e2e/test-results/

- name: Set up Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x

- name: Merge coverage reports
run: npm install && npm run cover:merge

- name: Upload coverage report
uses: actions/upload-artifact@v4
with:
name: overall-coverage
path: cover/
retention-days: 7
Loading

0 comments on commit 9460ce9

Please sign in to comment.