You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							411 lines
						
					
					
						
							9.7 KiB
						
					
					
				
			
		
		
	
	
							411 lines
						
					
					
						
							9.7 KiB
						
					
					
				name: Run Tests | 
						|
 | 
						|
on: | 
						|
  workflow_call: | 
						|
  pull_request: | 
						|
    types: | 
						|
      - opened | 
						|
      - synchronize | 
						|
  merge_group: | 
						|
  workflow_dispatch: | 
						|
 | 
						|
defaults: | 
						|
  run: | 
						|
    shell: bash | 
						|
 | 
						|
jobs: | 
						|
  test: | 
						|
    name: Tests | 
						|
    runs-on: ubuntu-latest | 
						|
 | 
						|
    services: | 
						|
      postgres: | 
						|
        image: postgres:13.18 | 
						|
        env: | 
						|
          POSTGRES_PASSWORD: password | 
						|
          POSTGRES_USER: postgres | 
						|
          POSTGRES_DB: data_collector | 
						|
        ports: | 
						|
          - 5432:5432 | 
						|
        # Needed because the Postgres container does not provide a health check | 
						|
        # tmpfs makes database faster by using RAM | 
						|
        options: >- | 
						|
          --mount type=tmpfs,destination=/var/lib/postgresql/data | 
						|
          --health-cmd pg_isready | 
						|
          --health-interval 10s | 
						|
          --health-timeout 5s | 
						|
          --health-retries 5           | 
						|
 | 
						|
    env: | 
						|
      RAILS_ENV: test | 
						|
      GEMFILE_RUBY_VERSION: 3.1.1 | 
						|
      DB_HOST: localhost | 
						|
      DB_DATABASE: data_collector | 
						|
      DB_USERNAME: postgres | 
						|
      DB_PASSWORD: password | 
						|
      RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} | 
						|
      PARALLEL_TEST_PROCESSORS: 4 | 
						|
 | 
						|
    steps: | 
						|
      - name: Checkout | 
						|
        uses: actions/checkout@v4 | 
						|
 | 
						|
      - name: Set up Ruby | 
						|
        uses: ruby/setup-ruby@v1 | 
						|
        with: | 
						|
          bundler-cache: true | 
						|
 | 
						|
      - name: Set up Node.js | 
						|
        uses: actions/setup-node@v4 | 
						|
        with: | 
						|
          cache: yarn | 
						|
          node-version: 20 | 
						|
 | 
						|
      - name: Create database | 
						|
        run: | | 
						|
                    bundle exec rake parallel:setup | 
						|
 | 
						|
      - name: Compile assets | 
						|
        run: | | 
						|
                    bundle exec rake assets:precompile | 
						|
 | 
						|
      - name: Run tests | 
						|
        run: | | 
						|
                    bundle exec rake parallel:spec['spec\/(?!features|models|requests|services)'] | 
						|
 | 
						|
  feature_test: | 
						|
    name: Feature Tests | 
						|
    runs-on: ubuntu-latest | 
						|
 | 
						|
    services: | 
						|
      postgres: | 
						|
        image: postgres:13.18 | 
						|
        env: | 
						|
          POSTGRES_PASSWORD: password | 
						|
          POSTGRES_USER: postgres | 
						|
          POSTGRES_DB: data_collector | 
						|
        ports: | 
						|
          - 5432:5432 | 
						|
        # Needed because the Postgres container does not provide a health check | 
						|
        # tmpfs makes database faster by using RAM | 
						|
        options: >- | 
						|
          --mount type=tmpfs,destination=/var/lib/postgresql/data | 
						|
          --health-cmd pg_isready | 
						|
          --health-interval 10s | 
						|
          --health-timeout 5s | 
						|
          --health-retries 5           | 
						|
 | 
						|
    env: | 
						|
      RAILS_ENV: test | 
						|
      GEMFILE_RUBY_VERSION: 3.1.1 | 
						|
      DB_HOST: localhost | 
						|
      DB_DATABASE: data_collector | 
						|
      DB_USERNAME: postgres | 
						|
      DB_PASSWORD: password | 
						|
      RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} | 
						|
 | 
						|
    steps: | 
						|
      - name: Checkout | 
						|
        uses: actions/checkout@v4 | 
						|
 | 
						|
      - name: Set up Ruby | 
						|
        uses: ruby/setup-ruby@v1 | 
						|
        with: | 
						|
          bundler-cache: true | 
						|
 | 
						|
      - name: Set up Node.js | 
						|
        uses: actions/setup-node@v4 | 
						|
        with: | 
						|
          cache: yarn | 
						|
          node-version: 20 | 
						|
 | 
						|
      - name: Create database | 
						|
        run: | | 
						|
                    bundle exec rake db:prepare | 
						|
 | 
						|
      - name: Compile assets | 
						|
        run: | | 
						|
                    bundle exec rake assets:precompile | 
						|
 | 
						|
      - name: Run tests | 
						|
        run: | | 
						|
                    bundle exec rspec spec/features --fail-fast --exclude-pattern "spec/features/accessibility_spec.rb" | 
						|
 | 
						|
  model_test: | 
						|
    name: Model tests | 
						|
    runs-on: ubuntu-latest | 
						|
 | 
						|
    services: | 
						|
      postgres: | 
						|
        image: postgres:13.18 | 
						|
        env: | 
						|
          POSTGRES_PASSWORD: password | 
						|
          POSTGRES_USER: postgres | 
						|
          POSTGRES_DB: data_collector | 
						|
        ports: | 
						|
          - 5432:5432 | 
						|
        # Needed because the Postgres container does not provide a health check | 
						|
        # tmpfs makes database faster by using RAM | 
						|
        options: >- | 
						|
          --mount type=tmpfs,destination=/var/lib/postgresql/data | 
						|
          --health-cmd pg_isready | 
						|
          --health-interval 10s | 
						|
          --health-timeout 5s | 
						|
          --health-retries 5           | 
						|
 | 
						|
    env: | 
						|
      RAILS_ENV: test | 
						|
      GEMFILE_RUBY_VERSION: 3.1.1 | 
						|
      DB_HOST: localhost | 
						|
      DB_DATABASE: data_collector | 
						|
      DB_USERNAME: postgres | 
						|
      DB_PASSWORD: password | 
						|
      RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} | 
						|
 | 
						|
    steps: | 
						|
      - name: Checkout | 
						|
        uses: actions/checkout@v4 | 
						|
 | 
						|
      - name: Set up Ruby | 
						|
        uses: ruby/setup-ruby@v1 | 
						|
        with: | 
						|
          bundler-cache: true | 
						|
 | 
						|
      - name: Set up Node.js | 
						|
        uses: actions/setup-node@v4 | 
						|
        with: | 
						|
          cache: yarn | 
						|
          node-version: 20 | 
						|
 | 
						|
      - name: Create database | 
						|
        run: | | 
						|
                    bundle exec rake db:prepare | 
						|
 | 
						|
      - name: Compile assets | 
						|
        run: | | 
						|
                    bundle exec rake assets:precompile | 
						|
 | 
						|
      - name: Run tests | 
						|
        run: | | 
						|
                    bundle exec rspec spec/models --fail-fast | 
						|
 | 
						|
  requests_test: | 
						|
    name: Requests tests | 
						|
    runs-on: ubuntu-latest | 
						|
 | 
						|
    services: | 
						|
      postgres: | 
						|
        image: postgres:13.18 | 
						|
        env: | 
						|
          POSTGRES_PASSWORD: password | 
						|
          POSTGRES_USER: postgres | 
						|
          POSTGRES_DB: data_collector | 
						|
        ports: | 
						|
          - 5432:5432 | 
						|
        # Needed because the Postgres container does not provide a health check | 
						|
        # tmpfs makes database faster by using RAM | 
						|
        options: >- | 
						|
          --mount type=tmpfs,destination=/var/lib/postgresql/data | 
						|
          --health-cmd pg_isready | 
						|
          --health-interval 10s | 
						|
          --health-timeout 5s | 
						|
          --health-retries 5           | 
						|
 | 
						|
    env: | 
						|
      RAILS_ENV: test | 
						|
      GEMFILE_RUBY_VERSION: 3.1.1 | 
						|
      DB_HOST: localhost | 
						|
      DB_DATABASE: data_collector | 
						|
      DB_USERNAME: postgres | 
						|
      DB_PASSWORD: password | 
						|
      RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} | 
						|
      PARALLEL_TEST_PROCESSORS: 4 | 
						|
 | 
						|
    steps: | 
						|
      - name: Checkout | 
						|
        uses: actions/checkout@v4 | 
						|
 | 
						|
      - name: Set up Ruby | 
						|
        uses: ruby/setup-ruby@v1 | 
						|
        with: | 
						|
          bundler-cache: true | 
						|
 | 
						|
      - name: Set up Node.js | 
						|
        uses: actions/setup-node@v4 | 
						|
        with: | 
						|
          cache: yarn | 
						|
          node-version: 20 | 
						|
 | 
						|
      - name: Create database | 
						|
        run: | | 
						|
                    bundle exec rake parallel:setup | 
						|
 | 
						|
      - name: Compile assets | 
						|
        run: | | 
						|
                    bundle exec rake assets:precompile | 
						|
 | 
						|
      - name: Run tests | 
						|
        run: | | 
						|
                    bundle exec rake parallel:spec['spec/requests'] | 
						|
 | 
						|
  services_test: | 
						|
    name: Services Tests | 
						|
    runs-on: ubuntu-latest | 
						|
 | 
						|
    services: | 
						|
      postgres: | 
						|
        image: postgres:13.18 | 
						|
        env: | 
						|
          POSTGRES_PASSWORD: password | 
						|
          POSTGRES_USER: postgres | 
						|
          POSTGRES_DB: data_collector | 
						|
        ports: | 
						|
          - 5432:5432 | 
						|
        # Needed because the Postgres container does not provide a health check | 
						|
        # tmpfs makes database faster by using RAM | 
						|
        options: >- | 
						|
          --mount type=tmpfs,destination=/var/lib/postgresql/data | 
						|
          --health-cmd pg_isready | 
						|
          --health-interval 10s | 
						|
          --health-timeout 5s | 
						|
          --health-retries 5           | 
						|
 | 
						|
    env: | 
						|
      RAILS_ENV: test | 
						|
      GEMFILE_RUBY_VERSION: 3.1.1 | 
						|
      DB_HOST: localhost | 
						|
      DB_DATABASE: data_collector | 
						|
      DB_USERNAME: postgres | 
						|
      DB_PASSWORD: password | 
						|
      RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} | 
						|
      PARALLEL_TEST_PROCESSORS: 4 | 
						|
 | 
						|
    steps: | 
						|
      - name: Checkout | 
						|
        uses: actions/checkout@v4 | 
						|
 | 
						|
      - name: Set up Ruby | 
						|
        uses: ruby/setup-ruby@v1 | 
						|
        with: | 
						|
          bundler-cache: true | 
						|
 | 
						|
      - name: Set up Node.js | 
						|
        uses: actions/setup-node@v4 | 
						|
        with: | 
						|
          cache: yarn | 
						|
          node-version: 20 | 
						|
 | 
						|
      - name: Create database | 
						|
        run: | | 
						|
                    bundle exec rake parallel:setup | 
						|
 | 
						|
      - name: Compile assets | 
						|
        run: | | 
						|
                    bundle exec rake assets:precompile | 
						|
 | 
						|
      - name: Run tests | 
						|
        run: | | 
						|
                    bundle exec rake parallel:spec['spec\/services'] | 
						|
 | 
						|
  accessibility_test: | 
						|
    name: Accessibility tests | 
						|
    runs-on: ubuntu-latest | 
						|
 | 
						|
    services: | 
						|
      postgres: | 
						|
        image: postgres:13.18 | 
						|
        env: | 
						|
          POSTGRES_PASSWORD: password | 
						|
          POSTGRES_USER: postgres | 
						|
          POSTGRES_DB: data_collector | 
						|
        ports: | 
						|
          - 5432:5432 | 
						|
        # Needed because the Postgres container does not provide a health check | 
						|
        # tmpfs makes database faster by using RAM | 
						|
        options: >- | 
						|
          --mount type=tmpfs,destination=/var/lib/postgresql/data | 
						|
          --health-cmd pg_isready | 
						|
          --health-interval 10s | 
						|
          --health-timeout 5s | 
						|
          --health-retries 5           | 
						|
 | 
						|
    env: | 
						|
      RAILS_ENV: test | 
						|
      GEMFILE_RUBY_VERSION: 3.1.1 | 
						|
      DB_HOST: localhost | 
						|
      DB_DATABASE: data_collector | 
						|
      DB_USERNAME: postgres | 
						|
      DB_PASSWORD: password | 
						|
      RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} | 
						|
      PARALLEL_TEST_PROCESSORS: 4 | 
						|
 | 
						|
    steps: | 
						|
      - name: Checkout | 
						|
        uses: actions/checkout@v4 | 
						|
 | 
						|
      - name: Set up Ruby | 
						|
        uses: ruby/setup-ruby@v1 | 
						|
        with: | 
						|
          bundler-cache: true | 
						|
 | 
						|
      - name: Set up Node.js | 
						|
        uses: actions/setup-node@v4 | 
						|
        with: | 
						|
          cache: yarn | 
						|
          node-version: 20 | 
						|
 | 
						|
      - name: Create database | 
						|
        run: | | 
						|
                    bundle exec rake parallel:setup | 
						|
 | 
						|
      - name: Compile assets | 
						|
        run: | | 
						|
                    bundle exec rake assets:precompile | 
						|
 | 
						|
      - name: Run tests | 
						|
        run: | | 
						|
                    bundle exec rspec spec/features/accessibility_spec.rb --fail-fast | 
						|
 | 
						|
  lint: | 
						|
    name: Lint | 
						|
    runs-on: ubuntu-latest | 
						|
 | 
						|
    steps: | 
						|
      - name: Checkout | 
						|
        uses: actions/checkout@v4 | 
						|
 | 
						|
      - name: Set up Ruby | 
						|
        uses: ruby/setup-ruby@v1 | 
						|
        with: | 
						|
          bundler-cache: true | 
						|
 | 
						|
      - name: Set up Node.js | 
						|
        uses: actions/setup-node@v4 | 
						|
        with: | 
						|
          cache: yarn | 
						|
          node-version: 20 | 
						|
 | 
						|
      - name: Install packages and symlink local dependencies | 
						|
        run: | | 
						|
                    yarn install --immutable --immutable-cache --check-cache | 
						|
 | 
						|
      - name: Lint | 
						|
        run: | | 
						|
                    bundle exec rake lint | 
						|
 | 
						|
  audit: | 
						|
    name: Audit dependencies | 
						|
    runs-on: ubuntu-latest | 
						|
 | 
						|
    steps: | 
						|
      - name: Checkout | 
						|
        uses: actions/checkout@v4 | 
						|
 | 
						|
      - name: Set up Ruby | 
						|
        uses: ruby/setup-ruby@v1 | 
						|
        with: | 
						|
          bundler-cache: true | 
						|
 | 
						|
      - name: Audit | 
						|
        run: | | 
						|
                    bundle exec bundler-audit
 | 
						|
 |