diff --git a/.github/workflows/ci_e2e_cypress.yml b/.github/workflows/ci_e2e_cypress_base.yml similarity index 95% rename from .github/workflows/ci_e2e_cypress.yml rename to .github/workflows/ci_e2e_cypress_base.yml index 11d45e34bb..4d7831b10c 100644 --- a/.github/workflows/ci_e2e_cypress.yml +++ b/.github/workflows/ci_e2e_cypress_base.yml @@ -1,4 +1,4 @@ -name: e2e cypress +name: e2e cypress BASE on: push: @@ -121,6 +121,7 @@ jobs: browser: chrome component: false config-file: cypress.config.ts + spec: "cypress/e2e/*.cy.ts" timeout-minutes: 25 env: DBHOST: localhost:27017 diff --git a/.github/workflows/ci_e2e_cypress_pages.yml b/.github/workflows/ci_e2e_cypress_pages.yml new file mode 100644 index 0000000000..3903933385 --- /dev/null +++ b/.github/workflows/ci_e2e_cypress_pages.yml @@ -0,0 +1,142 @@ +name: e2e cypress PAGES + +on: + push: + branches: + - production + - development + - staging + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + e2e-cypress: + runs-on: ubuntu-20.04 + services: + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:7.17.6-amd64 + ports: + - 9200/tcp + options: -e="discovery.type=single-node" --health-cmd="curl http://localhost:9200/_cluster/health" --health-interval=10s --health-timeout=30s --health-retries=10 + redis: + image: redis:5.0.14 + ports: + - 6379:6379 + + steps: + - name: Start MongoDB + uses: supercharge/mongodb-github-action@1.8.0 + with: + mongodb-version: 5.0.27 + mongodb-replica-set: test-rs + - name: Checkout reposistory + uses: actions/checkout@v4 + - name: Checkout submodules + run: git submodule update --init --recursive + - name: Setup Nodejs + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + - name: Cache node modules + uses: actions/cache@v2 + with: + path: ./node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + - name: install dependencies + run: yarn install + - run: sudo apt update + - run: sudo apt-get install poppler-utils + - name: Cache build + id: cache-build + uses: actions/cache@v2 + with: + path: ./prod + key: >- + ${{ runner.os }}-build-${{ hashFiles('app/**/*.*') }}- + ${{ hashFiles('database/**/*.*') }}- + ${{ hashFiles('**/yarn.lock') }}- + ${{ hashFiles('**/webpack.production.config.js') }}- + ${{ hashFiles('**/.babelrc') }}- + ${{ hashFiles('webpack/**/config.js') }}- + - name: build production + if: steps.cache-build.outputs.cache-hit != 'true' + run: yarn production-build + - name: Set up Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: 3.11 + - name: Clone dummy services + uses: actions/checkout@v4 + with: + repository: huridocs/dummy_extractor_services + path: dummy_extractor_services + - run: python3 -m venv .venv + working-directory: dummy_extractor_services + - run: make install_venv -C dummy_extractor_services + - run: make start -C dummy_extractor_services > logs.log & + - run: sleep 5 && wget --waitretry=5 --retry-connrefused -v http://localhost:5051/info + - name: Log on failure + if: ${{ failure() }} + run: cat dummy_extractor_services/logs.log + - run: yarn blank-state + id: blank-state-attempt1 + continue-on-error: true + env: + DBHOST: localhost:27017 + ELASTICSEARCH_URL: http://localhost:${{ job.services.elasticsearch.ports[9200] }} + DATABASE_NAME: uwazi_e2e + INDEX_NAME: uwazi_e2e + TRANSPILED: true + - run: yarn blank-state --force + id: blank-state-attempt2 + if: steps.blank-state-attempt1.outcome == 'failure' + env: + DBHOST: localhost:27017 + ELASTICSEARCH_URL: http://localhost:${{ job.services.elasticsearch.ports[9200] }} + DATABASE_NAME: uwazi_e2e + INDEX_NAME: uwazi_e2e + TRANSPILED: true + - run: yarn ix-config + env: + DBHOST: localhost:27017 + DATABASE_NAME: uwazi_e2e + - name: start Uwazi + env: + NOTIFICATION_DELAY: 50 + DBHOST: localhost:27017 + ELASTICSEARCH_URL: http://localhost:${{ job.services.elasticsearch.ports[9200] }} + DATABASE_NAME: uwazi_e2e + INDEX_NAME: uwazi_e2e + EXTERNAL_SERVICES: true + run: yarn run-production > output.txt & + - name: wait for uwazi to be ready + run: sleep 5 && wget --waitretry=5 --retry-connrefused -v http://localhost:3000/ + timeout-minutes: 3 + - name: Cypress run + uses: cypress-io/github-action@v6 + with: + browser: chrome + component: false + config-file: cypress.config.ts + spec: "cypress/e2e/pages/*.cy.ts" + timeout-minutes: 25 + env: + DBHOST: localhost:27017 + ELASTICSEARCH_URL: http://localhost:${{ job.services.elasticsearch.ports[9200] }} + TRANSPILED: true + - uses: actions/upload-artifact@v3 + if: ${{ failure() }} + with: + name: snapshots + path: cypress/e2e/**/__image_snapshots__/ + - uses: actions/upload-artifact@v3 + if: ${{ failure() }} + with: + name: video + path: cypress/videos/ + - name: Print server output + run: cat output.txt + if: failure() diff --git a/.github/workflows/ci_e2e_cypress_ssettings.yml b/.github/workflows/ci_e2e_cypress_ssettings.yml new file mode 100644 index 0000000000..b92c1727c8 --- /dev/null +++ b/.github/workflows/ci_e2e_cypress_ssettings.yml @@ -0,0 +1,142 @@ +name: e2e cypress SETTINGS + +on: + push: + branches: + - production + - development + - staging + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + e2e-cypress: + runs-on: ubuntu-20.04 + services: + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:7.17.6-amd64 + ports: + - 9200/tcp + options: -e="discovery.type=single-node" --health-cmd="curl http://localhost:9200/_cluster/health" --health-interval=10s --health-timeout=30s --health-retries=10 + redis: + image: redis:5.0.14 + ports: + - 6379:6379 + + steps: + - name: Start MongoDB + uses: supercharge/mongodb-github-action@1.8.0 + with: + mongodb-version: 5.0.27 + mongodb-replica-set: test-rs + - name: Checkout reposistory + uses: actions/checkout@v4 + - name: Checkout submodules + run: git submodule update --init --recursive + - name: Setup Nodejs + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + - name: Cache node modules + uses: actions/cache@v2 + with: + path: ./node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + - name: install dependencies + run: yarn install + - run: sudo apt update + - run: sudo apt-get install poppler-utils + - name: Cache build + id: cache-build + uses: actions/cache@v2 + with: + path: ./prod + key: >- + ${{ runner.os }}-build-${{ hashFiles('app/**/*.*') }}- + ${{ hashFiles('database/**/*.*') }}- + ${{ hashFiles('**/yarn.lock') }}- + ${{ hashFiles('**/webpack.production.config.js') }}- + ${{ hashFiles('**/.babelrc') }}- + ${{ hashFiles('webpack/**/config.js') }}- + - name: build production + if: steps.cache-build.outputs.cache-hit != 'true' + run: yarn production-build + - name: Set up Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: 3.11 + - name: Clone dummy services + uses: actions/checkout@v4 + with: + repository: huridocs/dummy_extractor_services + path: dummy_extractor_services + - run: python3 -m venv .venv + working-directory: dummy_extractor_services + - run: make install_venv -C dummy_extractor_services + - run: make start -C dummy_extractor_services > logs.log & + - run: sleep 5 && wget --waitretry=5 --retry-connrefused -v http://localhost:5051/info + - name: Log on failure + if: ${{ failure() }} + run: cat dummy_extractor_services/logs.log + - run: yarn blank-state + id: blank-state-attempt1 + continue-on-error: true + env: + DBHOST: localhost:27017 + ELASTICSEARCH_URL: http://localhost:${{ job.services.elasticsearch.ports[9200] }} + DATABASE_NAME: uwazi_e2e + INDEX_NAME: uwazi_e2e + TRANSPILED: true + - run: yarn blank-state --force + id: blank-state-attempt2 + if: steps.blank-state-attempt1.outcome == 'failure' + env: + DBHOST: localhost:27017 + ELASTICSEARCH_URL: http://localhost:${{ job.services.elasticsearch.ports[9200] }} + DATABASE_NAME: uwazi_e2e + INDEX_NAME: uwazi_e2e + TRANSPILED: true + - run: yarn ix-config + env: + DBHOST: localhost:27017 + DATABASE_NAME: uwazi_e2e + - name: start Uwazi + env: + NOTIFICATION_DELAY: 50 + DBHOST: localhost:27017 + ELASTICSEARCH_URL: http://localhost:${{ job.services.elasticsearch.ports[9200] }} + DATABASE_NAME: uwazi_e2e + INDEX_NAME: uwazi_e2e + EXTERNAL_SERVICES: true + run: yarn run-production > output.txt & + - name: wait for uwazi to be ready + run: sleep 5 && wget --waitretry=5 --retry-connrefused -v http://localhost:3000/ + timeout-minutes: 3 + - name: Cypress run + uses: cypress-io/github-action@v6 + with: + browser: chrome + component: false + config-file: cypress.config.ts + spec: "cypress/e2e/settings/*.cy.ts" + timeout-minutes: 25 + env: + DBHOST: localhost:27017 + ELASTICSEARCH_URL: http://localhost:${{ job.services.elasticsearch.ports[9200] }} + TRANSPILED: true + - uses: actions/upload-artifact@v3 + if: ${{ failure() }} + with: + name: snapshots + path: cypress/e2e/**/__image_snapshots__/ + - uses: actions/upload-artifact@v3 + if: ${{ failure() }} + with: + name: video + path: cypress/videos/ + - name: Print server output + run: cat output.txt + if: failure()