name: Cypress on: pull_request: push: branches: - main - stable* env: APP_NAME: deck CYPRESS_baseUrl: http://localhost:8081/index.php jobs: cypress: runs-on: ubuntu-latest strategy: fail-fast: false matrix: node-version: [20.x] # containers: [1, 2, 3] php-versions: [ '8.0' ] databases: [ 'sqlite' ] server-versions: [ 'master' ] steps: - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4.0.2 with: node-version: ${{ matrix.node-version }} - name: Register text Git reference run: | text_app_ref="$(if [ "${{ matrix.server-versions }}" = "master" ]; then echo -n "main"; else echo -n "${{ matrix.server-versions }}"; fi)" echo "text_app_ref=$text_app_ref" >> $GITHUB_ENV - name: Checkout server uses: actions/checkout@v4.1.1 with: repository: nextcloud/server ref: ${{ matrix.server-versions }} - name: Checkout submodules shell: bash run: | auth_header="$(git config --local --get http.https://github.com/.extraheader)" git submodule sync --recursive git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1 - name: Checkout ${{ env.APP_NAME }} uses: actions/checkout@v4.1.1 with: path: apps/${{ env.APP_NAME }} - name: Checkout text uses: actions/checkout@v4.1.1 with: repository: nextcloud/text ref: ${{ env.text_app_ref }} path: apps/text - name: Set up php ${{ matrix.php-versions }} uses: shivammathur/setup-php@2.30.0 with: php-version: ${{ matrix.php-versions }} extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu ini-values: apc.enable_cli=on coverage: none - name: Set up Nextcloud env: DB_PORT: 4444 PHP_CLI_SERVER_WORKERS: 10 run: | mkdir data php occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin php occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu" php occ config:system:set debug --value=true --type=boolean php -f index.php php -S 0.0.0.0:8081 & export OC_PASS=1234561 php occ user:add --password-from-env user1 php occ user:add --password-from-env user2 php occ app:enable deck php occ app:list cd apps/deck composer install --no-dev npm ci npm run build cd ../../ curl -v http://localhost:8081/index.php/login - name: Cypress run uses: cypress-io/github-action@v6 with: record: false parallel: false wait-on: '${{ env.CYPRESS_baseUrl }}' working-directory: 'apps/${{ env.APP_NAME }}' config: defaultCommandTimeout=10000,video=false env: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} npm_package_name: ${{ env.APP_NAME }} - name: Upload test failure screenshots uses: actions/upload-artifact@v4 if: failure() with: name: Upload screenshots path: apps/${{ env.APP_NAME }}/cypress/screenshots/ retention-days: 5 - name: Upload nextcloud logs uses: actions/upload-artifact@v4 if: failure() with: name: Upload nextcloud log path: data/nextcloud.log retention-days: 5