Capybara не передает заголовок после отправки формы

Я создаю приложение Rails 3, которое отображает различные представления для мобильных устройств (с использованием jQuery Mobile) и обычных настольных браузеров. Я тестирую Cucumber / Capybara и имею отдельные наборы тестов для мобильных устройств и браузеров. Я могу установить строку мобильного User-Agent в HTTP-заголовке запроса, используя найденный здесь «заголовок»…

Используя Cucumber / Capybara в Rails 3, как мне установить настраиваемую строку User-Agent?

Проблема ...

Большинство моих мобильных шагов Cucumber работают нормально (например, я устанавливаю мобильный заголовок на шаге, после чего отображаются мобильные представления). Однако после отправки формы тест отображает следующий шаг в браузере (а не в мобильном режиме, который мне нужен). Я думаю, это может быть связано с тем, что Capybara отбрасывает заголовок после действия отправки формы.

Я попытался проверить это, добавив регистратор к своему действию контроллера, чтобы я мог посмотреть заголовки user_agent, как показано ниже:

def show
    # …
    logger.info("Headers: #{request.user_agent}")
    # …
end

Я использовал заголовок iPhone (Покупатель - ресурс). В моем test.log я вижу:

Для действия create…

Started POST "/buyers" for 127.0.0.1 at 2011-04-19 16:49:18 -0700
Processing by BuyersController#create as HTML
  #...
Headers: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
  #...
Redirected to http://www.example.com/buyers/1
Completed 302 Found in 7ms

Для последующего действия show (примечание «Заголовки:» пусто)…

Started GET "/buyers/1" for 127.0.0.1 at 2011-04-19 16:49:18 -0700
Processing by BuyersController#show as HTML
 #...
Headers: 
 #...
Completed 200 OK in 4ms (Views: 2.8ms | ActiveRecord: 1.4ms)

Как и следовало ожидать, шаг «показать мне страницу» затем отображает страницу браузера, а не мобильную страницу, которую я хочу.

Как сохранить заголовок, чтобы все мои мобильные шаги выполнялись в моем мобильном тестовом наборе?

Обновление

Джниклас (создатель поистине потрясающей жемчужины капибары!) Отвечает:

«Это больше похоже на вопрос, чем проблема, tbh. В Rack-Test в настоящее время нет возможности достичь этого, кроме исправления обезьяны, о котором я знаю. Я думал о добавлении опции заголовка к драйверу стоечного теста, который позволил бы передавать различные варианты заголовка. Если вы используете много JavaScript, Selenium может быть лучше в любом случае и позволяет вам свободно устанавливать пользовательский агент, IIRC ».

https://github.com/jnicklas

https: // github .com / jnicklas / capybara

45
задан Community 23 May 2017 в 12:09
поделиться