Перехват посещений capybara chrome headless

Так много для этого простого вопроса, но я просто хотел выделить новую функцию на Java, которая позволит избежать всех путаниц в индексировании в массивах даже для новичков. Java-8 абстрагировал задачу итерации для вас.

int[] array = new int[5];

//If you need just the items
Arrays.stream(array).forEach(item -> { println(item); });

//If you need the index as well
IntStream.range(0, array.length).forEach(index -> { println(array[index]); })

В чем польза? Ну, с одной стороны, это читаемость, как английский. Во-вторых, вам не нужно беспокоиться о ArrayIndexOutOfBoundsException

0
задан 23tux 13 July 2018 в 14:24
поделиться

2 ответа

Это невозможно напрямую с Capybara, поскольку на самом деле он не знает о переходах страниц / запросах, которые происходят в браузере, если они специально не инициированы пользователем с помощью visit.

Потенциальный способ сделать то, что вы хотите, будет использовать программируемый прокси, например puffing-billy для обработки каждого запроса тестируемого приложения. Если вы используете puffing-billy, вам нужно посмотреть на функцию pass_request - https://github.com/oesmith/puffing-billy#in-your-tests-capybarawatir - направить по первому запросу, а затем сделайте все, что хотите, с ответом.

1
ответ дан Thomas Walpole 17 August 2018 в 12:37
поделиться

Я не стал бы путать тесты capybara с HTML-линией. В данный момент это может показаться умным, так как вы получаете список URL-адресов для проверки бесплатно с каждым тестом, но:

  • Вы, вероятно, будете набирать каждый URL несколько раз, потому что некоторые тесты проходят через него
  • Вы можете получить сбои, потому что HTML не идеален, хотя функция, которую вы тестируете, на самом деле хорошо.

У вас, вероятно, есть что-то вроде sitemap.xml или другого источники всех доступных URL-адресов. Я бы использовал его, чтобы сделать отдельную проверку, которая будет простой: запросите URL-адрес, напишите ответ. Прополощите и повторите.

Если вы все еще не уверены, попробуйте использовать page.html и сделайте это как

expect(page.html).to pass_linter

https://github.com/teamcapybara/capybara# debugging

Затем вы можете добавить его в качестве around для каждой спецификации type: :feature.

ИЗМЕНИТЬ: вот еще одно обходное решение, чтобы иметь каждый посещенный путь. Просто проанализируйте файл журнала сервера (например, этот cat log/devlopment.log | grep path), чтобы получить полный список, если посетили пути:

method=POST path=/users/login format=html controller=SessionsController action=create
status=302 duration=256.82 view=0.00 db=52.29 location=http://0.0.0.0:3000/platform/admin/dashboard params={"utf8"=>"✓", "authenticity_token"=>"ubGnWKOq8gbUE5C/aK375QQn5DpjHarUYxHtBLglGe6Lr9Ie3O5XPq90k5gr/SZbIPoDiiasvY0mGlwhzD/MsQ==", "user"=>{"email"=>"alex-3d51048235c9d1a8@toptal.io", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"} uid=983 remote_ip=127.0.0.1 x_forwarded_for= x_request_id=                
method=GET path=/admin/dashboard format=html controller=XXX action=show status=200 duration=3285.54 view=1051.32 db=2016.87 params={} uid=983 remote_ip=127.0.0.1 x_forwarded_for= x_request_id=   

и использовать его для литинга.

0
ответ дан meta 17 August 2018 в 12:37
поделиться
  • 1
    Спасибо за Ваш ответ. Сама перевязка выполняется быстро, поэтому делать это несколько раз не проблема. Тем не менее, сохранение списка URL-адресов, которые необходимо проверять каждый раз, когда кто-то вводит новый URL-адрес, приводит к большому количеству ручной работы. Конечно, HTML не идеален, но я не подтверждаю идеальный HTML-документ, а только некоторые более крупные показатели, такие как «только один h1-тег на странице», и тому подобное. – 23tux 13 July 2018 в 14:35
  • 2
    Ты прав. Я добавил способ, который может сработать для вас. Вместо того, чтобы искать крючок в capybara - настроить ожидания по вашим спецификациям и пользователю page.html (см. Мой обновленный ответ) – meta 13 July 2018 в 14:42
  • 3
    спасибо за ваше обновление. Я уже пробовал крюк вокруг, но когда один тест проходит через несколько страниц, я хотел бы нащупать каждый из них, а не только последний. Так что IMHO какой-то крючок в google chrome является обязательным – 23tux 13 July 2018 в 14:44
  • 4
    Хорошо, тогда, может быть, вы можете использовать файл журнала для получения каждого посещенного пути при запуске тестов capybara? – meta 13 July 2018 в 15:27
  • 5
    Я нахожусь в тесте, поэтому, когда тест закончен, ресурсы очищаются, и маршрут больше не будет доступен – 23tux 13 July 2018 в 16:34
Другие вопросы по тегам:

Похожие вопросы: