diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml new file mode 100644 index 000000000..b3400f3d9 --- /dev/null +++ b/.github/workflows/cypress.yml @@ -0,0 +1,108 @@ +name: Cypress + +on: + pull_request: + push: + branches: + - master + - 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: [14.x] + # containers: [1, 2, 3] + php-versions: [ '7.4' ] + databases: [ 'sqlite' ] + server-versions: [ 'master' ] + + steps: + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - name: Set up npm7 + run: npm i -g npm@7 + + - name: Checkout server + uses: actions/checkout@v2 + 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@v2 + with: + path: apps/${{ env.APP_NAME }} + + - 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 + 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 + curl -v http://localhost:8081/index.php/login + cat data/nextcloud.log + + - name: Cypress run + uses: cypress-io/github-action@v2 + with: + record: true + 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@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