diff --git a/.github/workflows/ci-test.yaml b/.github/workflows/ci-test.yaml deleted file mode 100644 index c9b51bb7..00000000 --- a/.github/workflows/ci-test.yaml +++ /dev/null @@ -1,284 +0,0 @@ -name: Integration and Functional tests - -on: - pull_request: - branches: - - master - - staging - - dev - -jobs: - setup: - runs-on: ubuntu-22.04 - strategy: - fail-fast: true - matrix: - php-versions: ['7.4'] - steps: -# REMOVE RESIDUAL CONTAINERS ( for local debug with act only ) - - name: Remove all mysql containers when working with act - if: ${{ env.ACT }} - run: | - CONTAINERS=$(docker ps -a -q --filter ancestor=mariadb:10.4.10) - if [ ! -z "$CONTAINERS" ]; then - docker rm -f $CONTAINERS - else - echo "No containers to remove." - fi - - - name: Checkout code - uses: actions/checkout@v4 - -# INSTALL DEPENDENCIES ---------------- - - name: Setup PHP, extensions and composer with shivammathur/setup-php - uses: shivammathur/setup-php@verbose - with: - php-version: ${{ matrix.php-versions }} - tools: composer:2.2 - extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, dom, filter, gd, iconv, json - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20.11.0' - - - name: Get composer cache directory - id: composer-cache - run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_ENV - - - name: Cache composer dependencies - uses: actions/cache@v4 - with: - path: | - ${{ env.dir }} - ./vendor - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: ${{ runner.os }}-composer- - -# INSTALL PACKAGES ---------------- - - name: Clean node_modules - run: rm -rf node_modules - - - name: Install NPM packages - run: npm ci - - - name: Install Composer dependencies - run: composer install --no-progress --prefer-dist --optimize-autoloader - - -# UPLOAD CACHED DIRECTORIES ---------------- - - name: Upload Vendor Directory as Artifact - uses: actions/upload-artifact@v4 - with: - name: vendor-dir - path: vendor/ - - phpStan: - needs: setup - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - -# GET CACHED DIRECTORIES ---------------- - - name: Download Vendor Directory - uses: actions/download-artifact@v4 - with: - name: vendor-dir - path: vendor/ - -# INSTALL DEPENDENCIES ---------------- - - name: Setup PHP, extensions and composer with shivammathur/setup-php - uses: shivammathur/setup-php@verbose - with: - php-version: ${{ matrix.php-versions }} - tools: composer:2.2 - extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, dom, filter, gd, iconv, json - - - name: Set executable permissions for PHPStan - run: chmod +x ./vendor/bin/phpstan - -# RUN PHPSTAN ---------------- - - name: Run PHPStan - run: ./vendor/bin/phpstan analyse src - - - symfony-tests: - needs: setup - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - -# GET CACHED DIRECTORIES ---------------- - - name: Download Vendor Directory - uses: actions/download-artifact@v4 - with: - name: vendor-dir - path: vendor/ - -# INSTALL DEPENDENCIES ---------------- - - name: Install MySQL Client - run: sudo apt-get update && sudo apt-get install -y mysql-client - - - name: Setup PHP, extensions and composer with shivammathur/setup-php - uses: shivammathur/setup-php@verbose - with: - php-version: ${{ matrix.php-versions }} - tools: composer:2.2 - extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, dom, filter, gd, iconv, json - -# SET ENVIRONMENT VARIABLES ---------------- - - name: Set up test environment variables - run: cp .env.test .env - -# START SERVICES ---------------- - - name: Set up MySQL - uses: getong/mariadb-action@v1.1 - with: - host port: 3306 # Optional, default value is 3306. The port of host - container port: 3306 # Optional, default value is 3306. The port of container - character set server: 'utf8mb4' # Optional, default value is 'utf8mb4'. The '--character-set-server' option for mysqld - collation server: 'utf8mb4_general_ci' # Optional, default value is 'utf8mb4_general_ci'. The '--collation-server' option for mysqld - mariadb version: '10.4.10' # Optional, default value is "latest". The version of the MySQL - mysql database: 'symfony' # Optional, default value is "test". The specified database which will be created - mysql root password: 'secret' # Required if "mysql user" is empty, default is empty. The root superuser password - mysql user: 'user' # Required if "mysql root password" is empty, default is empty. The superuser for the specified database. Can use secrets, too - mysql password: 'password' # Required if "mysql user" exists. The password for the "mysql user" - - - name: Wait for MySQL to become available - run: | - until mysql -h 127.0.0.1 -u root -psecret -e "SELECT 1"; do - echo 'Waiting for MySQL...' - sleep 1 - done - -# RUN MIGRATIONS ---------------- - - name: Run migrations - run: php bin/console doctrine:migrations:migrate --no-interaction - -# RUN TESTS ---------------- - - name: Run unit and functional tests - run: | - php ./vendor/bin/phpunit --configuration phpunit.xml.dist - - - cypress-tests: - needs: setup - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - -# GET CACHED DIRECTORIES ---------------- - - name: Download Vendor Directory - uses: actions/download-artifact@v4 - with: - name: vendor-dir - path: vendor/ - -# INSTALL DEPENDENCIES ---------------- - - name: Install MySQL Client - run: sudo apt-get update && sudo apt-get install -y mysql-client - - - name: Install Cypress dependencies - run: sudo apt-get install -y xvfb libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 xauth - - - name: Setup PHP, extensions and composer with shivammathur/setup-php - uses: shivammathur/setup-php@verbose - with: - php-version: ${{ matrix.php-versions }} - tools: composer:2.2 - extensions: mbstring, xml, ctype, iconv, intl, pdo_mysql, dom, filter, gd, iconv, json - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20.11.0' - - - name: Install Symfony CLI globally - run: | - curl -sS https://get.symfony.com/cli/installer | bash - sudo mv /home/runner/.symfony5/bin/symfony /usr/local/bin/symfony - -# SET ENVIRONMENT VARIABLES ---------------- - - name: Set up test environment variables - run: cp .env.test .env - -# START SERVICES ---------------- - - name: Set up MySQL - uses: getong/mariadb-action@v1.1 - with: - host port: 3306 # Optional, default value is 3306. The port of host - container port: 3306 # Optional, default value is 3306. The port of container - character set server: 'utf8mb4' # Optional, default value is 'utf8mb4'. The '--character-set-server' option for mysqld - collation server: 'utf8mb4_general_ci' # Optional, default value is 'utf8mb4_general_ci'. The '--collation-server' option for mysqld - mariadb version: '10.4.10' # Optional, default value is "latest". The version of the MySQL - mysql database: 'symfony' # Optional, default value is "test". The specified database which will be created - mysql root password: 'secret' # Required if "mysql user" is empty, default is empty. The root superuser password - mysql user: 'user' # Required if "mysql root password" is empty, default is empty. The superuser for the specified database. Can use secrets, too - mysql password: 'password' # Required if "mysql user" exists. The password for the "mysql user" - - - name: Wait for MySQL to become available - run: | - until mysql -h 127.0.0.1 -u root -psecret -e "SELECT 1"; do - echo 'Waiting for MySQL...' - sleep 1 - done - - - name: Start Symfony server - run: symfony server:start --no-tls -d --port=8000 - -# RUN MIGRATIONS ---------------- - - name: Run migrations - run: php bin/console doctrine:migrations:migrate --no-interaction - -# FILL DATABASE ---------------- - - name: Run fixture - run: php bin/console doctrine:fixtures:load --no-interaction - -# BUILD FRONT ---------------- - - name : install packages - run: npm install - - - name: Enable verbose npm logging - run: npm config set loglevel verbose - - - name: Build front-end assets - run: ./node_modules/.bin/encore production --progress - -# RUN CYPRESS TESTS ---------------- - - name: Run Cypress tests - run: CYPRESS_BASE_URL=http://localhost:8000 npm run cy:test:main - - -# CHANGE ENV VARIABLES ---------------- - - name: Set up test environment variables - run: cp .env.oidc.test .env.test - -# START KEYCLOAK ---------------- - - name: Start Keycloak - run: | - docker run -d \ - --name keycloak \ - -e KEYCLOAK_USER=admin \ - -e KEYCLOAK_PASSWORD=admin \ - -e DB_VENDOR=h2 \ - -e KEYCLOAK_IMPORT=/config/realm-export.json \ - -v ${{ github.workspace }}/.docker/keycloak/config/realm-export.localhost.json:/config/realm-export.json \ - -p 8080:8080 \ - --user root \ - jboss/keycloak:16.1.1 - -# Wait for Keycloak to start - - name: Wait for Keycloak to be ready - run: | - until $(curl --output /dev/null --silent --head --fail http://localhost:8080/auth); do - printf '.' - sleep 5 - done - -# RUN CYPRESS TESTS ---------------- - - name: Run Cypress keycloak tests - uses: cypress-io/github-action@v6 - with: - start: npm run cy:test:oidc - - diff --git a/.github/workflows/ci-test2.yaml b/.github/workflows/ci-test2.yaml index 73796bae..c7e8eb89 100644 --- a/.github/workflows/ci-test2.yaml +++ b/.github/workflows/ci-test2.yaml @@ -277,5 +277,5 @@ jobs: # RUN CYPRESS TESTS ---------------- - name: Run Cypress tests - run: CYPRESS_BASE_URL=http://localhost:8000 CYPRESS_KEYCLOAK_URL=http://localhost:8080 npm run cy:test:main + run: CYPRESS_BASE_URL=http://localhost:8000 CYPRESS_KEYCLOAK_URL=http://localhost:8080 npm run cy:test:oidc diff --git a/cypress/e2e/keycloak/admin/admin1_can_login.cy.js b/cypress/e2e/keycloak/admin/admin1_can_login.cy.js index 7ee0818c..c92e809c 100644 --- a/cypress/e2e/keycloak/admin/admin1_can_login.cy.js +++ b/cypress/e2e/keycloak/admin/admin1_can_login.cy.js @@ -4,10 +4,10 @@ // temporarily disable uncaught exception handling import {login} from "../keycloak_reusables.cytools"; -const keycloakUrl = Cypress.env('KEYCLOAK_URL') || 'http://localhost:8080' +let keycloakUrl = Cypress.env('KEYCLOAK_URL') if (!keycloakUrl) { - throw new Error('keycloakUrl is not defined') + keycloakUrl = 'http://localhost:8080' // default value need for CI } Cypress.on('uncaught:exception', (err, runnable) => {