Запуск функций JavaScript с использованием execute_script от wallaby не работает
система
OSX v10.13.4 / Elixir v1.6.5 / OTP 19 / Phoenix 1.3.2 / Wallaby 0.19.2 / PhantomJS 2.1
вопрос
Следующий код работает в тестировании
execute_script(session, "localStorage.setItem('test', 'foo'); return localStorage.getItem('test');")
Тем не менее, если я вызываю точно такие же методы, которые находятся в функции с именем get_test()
внутри app.js
моего приложения Phoenix
function get_test() {
localStorage.setItem('test', 'foo');
return localStorage.getItem('test');
}
window.get_test = get_test
И запустите следующее в моем наборе тестов
execute_script(session, "return get_test();")
я получил {:error, :obscured}
Я пробовал с селеном по тому же коду, и он работает. Однако, по некоторым причинам, с PhantomJS он, похоже, не находит функции, которые были созданы нами.
Я что-то пропустил? Я заметил, что в тестах для execute_script в wallaby нет тестов, которые вызывают специально созданные функции.
Аналогичный тест https://github.com/keathley/wallaby/blob/master/integration_test/cases/browser/local_storage_test.exs
из которых я добавил следующее к local_storage_test
чтобы убедиться, что я не сходил с ума
@function_script """
function get_tester() {
localStorage.setItem('tester', 'foo');
return localStorage.getItem('tester');
}
return get_tester();
"""
session
|> visit("index.html")
|> execute_script(@function_script, fn(value) -> send self(), {:callback, value} end)
assert_received {:callback, "foo"}
и это прошло. Это явно что-то не так с моим приложением. Или конфиг фантома возможно.
ОБНОВИТЬ:
Хотя это и не упомянуто прямо - я сузил это до libsodim, не загружающегося должным образом фантомами. Вернуться к основам отладки. Ничего плохого в написании JS. Положительным моментом является то, что у меня теперь есть целая библиотека тестов, а также классные инструменты для тестирования.