name: Cypress on: pull_request: push: branches: - master - stable* concurrency: group: ${{ github.head_ref || github.run_id }} cancel-in-progress: true env: APP_NAME: text CYPRESS_baseUrl: http://localhost:8081/index.php jobs: init: runs-on: ubuntu-latest steps: - name: Checkout server uses: actions/checkout@v3 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 viewer uses: actions/checkout@v3 with: repository: nextcloud/viewer ref: ${{ matrix.server-versions }} path: apps/viewer - name: Checkout app uses: actions/checkout@v3 with: path: apps/${{ env.APP_NAME }} - name: Set up node 16 uses: actions/setup-node@v3 with: cache: 'npm' cache-dependency-path: apps/${{ env.APP_NAME}}/package-lock.json node-version: 16 - name: Install dependencies & build app working-directory: apps/${{ env.APP_NAME }} run: | npm ci TESTING=true npm run build --if-present - name: Save context uses: actions/cache@v3 with: key: cypress-context-${{ github.run_id }} path: /home/runner/work cypress: runs-on: ubuntu-latest needs: init strategy: fail-fast: false matrix: node-version: [16] containers: [1, 2, 3, 4, 5, 6, 7, 8] php-versions: [ '7.4' ] databases: [ 'sqlite' ] server-versions: [ 'master' ] steps: - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - name: Restore context uses: actions/cache@v3 with: key: cypress-context-${{ github.run_id }} path: /home/runner/work - name: Set up php ${{ matrix.php-versions }} uses: shivammathur/setup-php@v2 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 echo '"\OC\Memcache\APCu","hashing_default_password"=>true];' > config/config.php 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 -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 viewer php occ app:enable text php occ app:list curl -v http://localhost:8081/index.php/login cat data/nextcloud.log - name: Cypress run uses: cypress-io/github-action@v4 with: record: true parallel: true wait-on: '${{ env.CYPRESS_baseUrl }}' working-directory: 'apps/${{ env.APP_NAME }}' config: defaultCommandTimeout=10000,video=false tag: ${{ github.event_name }} env: # https://github.com/cypress-io/github-action/issues/124 COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }} COMMIT_INFO_SHA: ${{ github.event.pull_request.head.sha }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} npm_package_name: ${{ env.APP_NAME }} - name: Upload test failure screenshots uses: actions/upload-artifact@v2 if: failure() with: name: Upload screenshots path: apps/${{ env.APP_NAME }}/cypress/screenshots/ retention-days: 5 - name: Upload nextcloud logs uses: actions/upload-artifact@v2 if: failure() with: name: Upload nextcloud log path: data/nextcloud.log retention-days: 5