Тесты не проходят только на действиях github с rails, elasticsearch и searchkick

Ruby 3.0.3Rails 7.0.0.alpha2elasticsearch 7.17.1searchkick 5.0.3

Все мои тесты проходят local, но не на GitHub, и я не знаю, почему... Вы знаете, как показать детали ошибки 500? Это тест капибары

Это конфиг, который я добавил

Результаты

Run echo $ELASTIC_SEARCH_URL
http://localhost:49154
health
green
create index
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    99  100    66  100    33    985    492 --:--:-- --:--:-- --:--:--  1477
{"acknowledged":true,"shards_acknowledged":true,"index":"iot_log"}read_only_allow_delete
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    67  100    21  100    46   3000   6571 --:--:-- --:--:-- --:--:--  9571
{"acknowledged":true}watermarks
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   654  100   418  100   236  12294   6941 --:--:-- --:--:-- --:--:-- 19818
{
  "acknowledged" : true,
  "persistent" : { },
  "transient" : {
    "cluster" : {
      "routing" : {
        "allocation" : {
          "disk" : {
            "watermark" : {
              "low" : "50gb",
              "flood_stage" : "10gb",
              "high" : "20gb"
            }
          }
        }
      },
      "info" : {
        "update" : {
          "interval" : "1m"
        }
      }
    }
  }
}
Run bundle exec rails test
  bundle exec rails test
  bundle exec rails test:controllers
  # bundle exec rails test test/controllers/companies_controller_test.rb:105
  bundle exec rails test:system
  shell: /usr/bin/bash -e {0}
  env:
    RAILS_ENV: test
    NODE_ENV: test
    ES_HOME: /home/runner/elasticsearch/7.17.1
    DB_PASSWORD: postgres
    DB_PORT: 5432
    REDIS_PORT: 49153
    ELASTIC_SEARCH_URL: http://localhost:49154
Running 33 tests in a single process (parallelization threshold is 50)
Run options: --seed 9006

# Running:

F

Failure:
TasksControllerTest#test_should_destroy_task_&_related_permission(s)_where_user_!=_assignee [/home/runner/work/hubflo/hubflo/test/controllers/tasks_controller_test.rb:134]:
Expected response to be a <3XX: redirect>, but was a <500: Internal Server Error>

rails test test/controllers/tasks_controller_test.rb:128

Изменить с ответами

Поэтому я использовал вариант rescue_from из отвечать. Ошибка была

#<Searchkick::ImportError: {"type"=>"index_not_found_exception", "reason"=>"no such index [companies_test]", "resource.type"=>"index_expression", "resource.id"=>"companies_test", "index_uuid"=>"_na_", "index"=>"companies_test"} on item with id '650928[31](https://github.com/Hubflo-sas/hubflo/runs/5795678731?check_suite_focus=true#step:16:31)2'>
F

Failure:
CompaniesControllerTest#test_should_destroy_company [/home/runner/work/hubflo/hubflo/test/controllers/companies_controller_test.rb:110]:
Expected response to be a <3XX: redirect>, but was a <500: Internal Server Error>

rails test test/controllers/companies_controller_test.rb:104

Мне пришлось запустить эту команду перед запуском тестов bundle exec rake searchkick:reindex:all

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

<500: Internal Server Error> указывает на то, что в вашем контроллере возникло какое-то исключение, которое не было должным образом спасено. Если вы не можете воспроизвести проблему в своей среде разработки, вы можете:

  1. Либо добавьте begin..rescue в действие вашего контроллера, затем внутри восстановления выполните: p $ERROR_INFO.message ( $ERROR_INFO — это специальная переменная, которая содержит последнее спасенное исключение, это более читабельный способ использования $!
def my_controller_action
  # ... (business logic)
rescue
 p $ERROR_INFO.message
end

вы также можете добавить глобальный rescue_from в свой ApplicationController

class ApplicationController
  rescue_from Exception, with: :my_exception_handler

private
  def my_exception_handler
    # exception handling logic ( logging to Sentry for example etc.)
  end
end

а вот более подробный пример из документации рельсов

  1. Или с помощью минитеста rails вы можете запустить rails test --backtrace (источник здесь), там есть более интересные опции, которые вы можете использовать в своем CI или даже при локальной разработке.

Другие вопросы по теме