Skip to content

Bump phpstan/phpstan from 2.1.42 to 2.1.45 (#145) #995

Bump phpstan/phpstan from 2.1.42 to 2.1.45 (#145)

Bump phpstan/phpstan from 2.1.42 to 2.1.45 (#145) #995

Workflow file for this run

name: "E2E tests"
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: '0 12 * * *'
jobs:
DynamicVersionMatrix:
name: Dynamic version matrix
runs-on: ubuntu-latest
outputs:
matrix: '[
{ tag: "develop", expected: "${{ steps.etherpad-version-cleaned.outputs.version }}" },
{ tag: "${{ steps.etherpad-version-cleaned.outputs.version }}", expected: "${{ steps.etherpad-version-cleaned.outputs.version }}" },
{ tag: "2.2.7", expected: "2.2.7" },
{ tag: "2.1.0", expected: "2.1.0" },
{ tag: "2.0.2", expected: "2.0.2" },
{ tag: "2.0.0", expected: "2.0.0" },
{ tag: "1.9.7", expected: "1.9.7" },
{ tag: "1.8.18", expected: "1.8.18" },
{ tag: "1.8.0", expected: "1.8.0" },
{ tag: "1.7.5", expected: "1.7.5" }
]'
version: ${{ steps.etherpad-version-cleaned.outputs.version }}
steps:
- id: etherpad
uses: pozetroninc/github-action-get-latest-release@master
with:
repository: ether/etherpad-lite
- id: etherpad-version-cleaned
run: |
LATEST_RELEASE=${{ steps.etherpad.outputs.release }}
CLEANED_VERSION="${LATEST_RELEASE//v/}"
echo "version=$CLEANED_VERSION" >> "$GITHUB_OUTPUT"
EtherpadWithNginxReverseProxy:
name: Docker [1.8.17] + Nginx (no websocket)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Start docker containers
run: |
EP_VERSION=1.8.17 docker compose -f ./tests/e2e/docker/docker-compose.no_websocket.yml up -d --wait
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v5
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Scan etherpad instance
run: |
set -euo pipefail
bin/console.php ether:scan -vvv http://localhost:8080 \
| grep -E "Package version|HTTP/1.1 400|Websocket" \
| sed 's/ *$//' > /tmp/actual.txt
diff -u tests/e2e/fixture/reverse_proxy_no_websocket.txt /tmp/actual.txt
Etherpad2WithNginxReverseProxy:
name: Docker [${{ matrix.versions.tag }}] + Nginx (no websocket)
runs-on: ubuntu-latest
strategy:
matrix:
versions: [
{ tag: "2.2.2", expected: "2.2.2" },
{ tag: "2.0.2", expected: "2.0.2" },
{ tag: "2.0.0", expected: "2.0.0" },
]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Start docker containers
run: |
EP_VERSION=${{ matrix.versions.tag }} docker compose -f ./tests/e2e/docker/docker-compose.no_websocket.yml up -d --wait
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v5
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Scan etherpad instance
run: |
set -euo pipefail
output="$(bin/console.php ether:scan http://localhost:8080)"
echo "$output"
expected="Package version: ${{ matrix.versions.expected }}"
if ! grep -Fq "$expected" <<< "$output"; then
echo "Assertion failed: expected output to contain: $expected"
exit 1
fi
- name: Dump docker logs on failure
if: failure()
uses: jwalton/gh-docker-logs@v2
EtherpadWithNginxReverseProxyInSubPath:
name: Docker [${{ matrix.versions.tag }}] + Nginx (with subpath)
runs-on: ubuntu-latest
needs: DynamicVersionMatrix
strategy:
matrix:
versions: ${{ fromJSON(needs.DynamicVersionMatrix.outputs.matrix) }}
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Start docker containers
run: |
EP_VERSION=${{ matrix.versions.tag }} docker compose -f ./tests/e2e/docker/docker-compose.subpath.yml up -d --wait
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v5
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Wait until etherpad is healthy
run: |
until curl -s -f -o /dev/null "http://localhost:8080/etherpad"
do
sleep 2
done
- name: Scan etherpad instance
run: |
set -euo pipefail
output="$(bin/console.php ether:scan http://localhost:8080/etherpad)"
echo "$output"
expected="Package version: ${{ matrix.versions.expected }}"
if ! grep -Fq "$expected" <<< "$output"; then
echo "Assertion failed: expected output to contain: $expected"
exit 1
fi
EtherpadWithNginxReverseProxyWithoutSubPath:
name: Docker [1.9.7] + Nginx (without subpath)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Start docker containers
run: |
EP_VERSION=1.9.7 docker compose -f ./tests/e2e/docker/docker-compose.reverse_proxy.yml up -d --wait
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v5
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Scan etherpad instance
run: |
set -euo pipefail
output="$(bin/console.php ether:scan http://localhost:8080/test)"
echo "$output"
expected="Package version: 1.9.7"
if ! grep -Fq "$expected" <<< "$output"; then
echo "Assertion failed: expected output to contain: $expected"
exit 1
fi
Etherpad17:
name: Source [1.7.0]
runs-on: ubuntu-latest
steps:
- name: Clone etherpad repository
uses: actions/checkout@v6
with:
repository: ether/etherpad-lite
path: etherpad
ref: 1.7.0
- uses: actions/setup-node@v6
with:
node-version: "8.9"
- uses: JarvusInnovations/background-action@v1
name: Start etherpad service
with:
run: bin/run.sh &
wait-on: |
http://localhost:9001
log-output-if: failure
wait-for: 5m
working-directory: etherpad
- name: Checkout repository
uses: actions/checkout@v6
with:
path: app
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v5
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
working-directory: ./app
- name: Scan etherpad instance
run: |
set -euo pipefail
output="$(app/bin/console.php ether:scan http://localhost:9001)"
echo "$output"
expected="Package version: 1.7.0"
if ! grep -Fq "$expected" <<< "$output"; then
echo "Assertion failed: expected output to contain: $expected"
exit 1
fi
EtherpadWithPlugins:
name: Source [develop] with plugins
runs-on: ubuntu-latest
steps:
- name: Clone etherpad repository
uses: actions/checkout@v6
with:
repository: ether/etherpad-lite
path: etherpad
- uses: actions/setup-node@v6
with:
node-version: 24
- uses: JarvusInnovations/background-action@v1
name: Start etherpad service
with:
run: |
npm install pnpm -g
bin/installDeps.sh
pnpm run plugins i ep_align ep_headings2 ep_table_of_contents ep_font_size ep_spellcheck ep_markdown
bin/run.sh &
wait-on: |
http://localhost:9001
log-output-if: failure
wait-for: 5m
working-directory: etherpad
- name: Checkout repository
uses: actions/checkout@v6
with:
path: app
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v5
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
working-directory: ./app
- name: Scan etherpad instance
run: |
set -euo pipefail
app/bin/console.php ether:scan http://localhost:9001 \
| sed 's/ *$//' \
| grep -vE "(Version is|Package version)" \
| grep -v "Server running since" \
| cut -d'@' -f1 > /tmp/actual.txt
diff -u app/tests/e2e/fixture/master_with_plugins.txt /tmp/actual.txt
LatestEtherpad:
name: Docker [latest]
runs-on: ubuntu-latest
needs: DynamicVersionMatrix
services:
etherpad:
image: etherpad/etherpad:latest
ports:
- 9001:9001
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v5
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Create expected output file
run: |
cat tests/e2e/fixture/latest.txt | sed 's/$EP_VERSION/${{ needs.DynamicVersionMatrix.outputs.version }}/' > /tmp/latest.txt
- name: Scan etherpad instance
run: |
set -euo pipefail
bin/console.php ether:scan http://localhost:9001 \
| sed 's/ *$//' \
| grep -v "Server running since" > /tmp/actual.txt
diff -u /tmp/latest.txt /tmp/actual.txt
EtherpadDifferentVersion:
name: Docker [${{ matrix.versions.tag }}]
runs-on: ubuntu-latest
needs: DynamicVersionMatrix
services:
etherpad:
image: etherpad/etherpad:${{ matrix.versions.tag }}
ports:
- 9001:9001
strategy:
matrix:
versions: ${{ fromJSON(needs.DynamicVersionMatrix.outputs.matrix) }}
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v5
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Wait until etherpad is healthy
run: |
until curl -s -f -o /dev/null "http://localhost:9001"
do
sleep 2
done
- name: Scan etherpad instance
run: |
set -euo pipefail
output="$(bin/console.php ether:scan http://localhost:9001)"
echo "$output"
expected="Package version: ${{ matrix.versions.expected }}"
if ! grep -Fq "$expected" <<< "$output"; then
echo "Assertion failed: expected output to contain: $expected"
exit 1
fi
EtherpadAdminLogin:
name: Docker admin login [${{ matrix.versions.tag }}]
runs-on: ubuntu-latest
services:
etherpad:
image: etherpad/etherpad:${{ matrix.versions.tag }}
env:
ADMIN_PASSWORD: admin
ports:
- 9001:9001
strategy:
matrix:
versions: [
{ tag: "2.3.2" },
{ tag: "2.2.2" },
{ tag: "1.9.7" },
{ tag: "1.8.0" },
]
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v5
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
- name: Scan etherpad instance
run: |
set -euo pipefail
output="$(bin/console.php ether:scan http://localhost:9001)"
echo "$output"
expected="Admin area is accessible with admin / admin"
if ! grep -Fq "$expected" <<< "$output"; then
echo "Assertion failed: expected output to contain: $expected"
exit 1
fi