E2E tests #332
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.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@v4 | |
- 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@v4 | |
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 | |
uses: GuillaumeFalourd/assert-command-line-output@v2.4 | |
with: | |
command_line: bin/console.php ether:scan -vvv http://localhost:8080 | grep -E "Package version|HTTP/1.1 400" | sed 's/ *$//' | |
assert_file_path: tests/e2e/fixture/reverse_proxy_no_websocket.txt | |
expected_result: PASSED | |
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@v4 | |
- 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@v4 | |
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 | |
uses: GuillaumeFalourd/assert-command-line-output@v2.4 | |
with: | |
command_line: bin/console.php ether:scan http://localhost:8080 | |
contains: "Package version: ${{ matrix.versions.expected }}" | |
expected_result: PASSED | |
- 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@v4 | |
- 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@v4 | |
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 | |
uses: GuillaumeFalourd/assert-command-line-output@v2.4 | |
with: | |
command_line: bin/console.php ether:scan http://localhost:8080/etherpad | |
contains: "Package version: ${{ matrix.versions.expected }}" | |
expected_result: PASSED | |
EtherpadWithNginxReverseProxyWithoutSubPath: | |
name: Docker [1.9.7] + Nginx (without subpath) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- 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@v4 | |
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 | |
uses: GuillaumeFalourd/assert-command-line-output@v2.4 | |
with: | |
command_line: bin/console.php ether:scan http://localhost:8080/test | |
contains: "Package version: 1.9.7" | |
expected_result: PASSED | |
EtherpadWithPlugins: | |
name: Source [develop] with plugins | |
runs-on: ubuntu-latest | |
steps: | |
- name: Clone etherpad repository | |
uses: actions/checkout@v4 | |
with: | |
repository: ether/etherpad-lite | |
path: etherpad | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- 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@v4 | |
with: | |
path: app | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
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 | |
uses: GuillaumeFalourd/assert-command-line-output@v2.4 | |
with: | |
command_line: 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 | |
assert_file_path: app/tests/e2e/fixture/master_with_plugins.txt | |
expected_result: PASSED | |
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@v4 | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
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 | |
uses: GuillaumeFalourd/assert-command-line-output@v2.4 | |
with: | |
command_line: bin/console.php ether:scan http://localhost:9001 | sed 's/ *$//' | grep -v "Server running since" | |
assert_file_path: /tmp/latest.txt | |
expected_result: PASSED | |
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@v4 | |
- name: Cache Composer packages | |
id: composer-cache | |
uses: actions/cache@v4 | |
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 | |
uses: GuillaumeFalourd/assert-command-line-output@v2.4 | |
with: | |
command_line: bin/console.php ether:scan http://localhost:9001 | |
contains: "Package version: ${{ matrix.versions.expected }}" | |
expected_result: PASSED |