Как я могу заменить сервер в тестере веб-компонентов
У меня есть проект, основанный на Polymer Starter Kit, который включает в себя Web-Component-Tester
Этот проект включает в себя код сервера php, который я также хотел бы протестировать, написав тесты для запуска в браузере, который будет использовать код сервера PHP через Ajax Calls.
Это подразумевает замену сервера, который тестер веб-компонентов использует ТОЛЬКО при тестировании кода на стороне сервера. Я надеюсь сделать для этого отдельное задание.
К сожалению, я не понимаю отношения между WCT, Selenium и тем, что когда-либо работал сервер в настоящее время. Я вижу, что команда WCT запускает Selenium, но я не могу узнать, что такое веб-сервер и как он запускается. Я подозреваю, что это WCT, потому что есть конфигурация сопоставления каталогов с URL, но кроме этого я понятия не имею, несмотря на попытку чтения кода.
Может кто-нибудь объяснить, как я заставляю его запускать свой собственный сервер при тестировании клиента, но полагаясь на уже настроенный веб-сервер (nginx) при запуске сервера. Я могу настроить nginx для запуска с локального хоста или другого домена, если это способ выбора другой конфигурации.
РЕДАКТИРОВАТЬ: Теперь я обнаружил, что runner/webserver.js запускает экспресс-сервер, и что URL-адреса сопоставляются таким образом, что базовый каталог для тестового бегуна и каталог bower_components сопоставляются с URL-адресом / components.
В настоящее время меня смущает то, при каких обстоятельствах это происходит. Кажется, что загрузка плагинов как-то делает это, но мое понимание чтения кода для этого незначительно.
1 ответ
Ответ заключается в том, что сам тестер веб-компонентов имеет комментарий в runner/config.js
файл.
В wct-conf.js
, вы можете использовать ключ registerHooks в объект, который возвращается, чтобы добавить функцию, которая делает
registerHooks: function(wct) {
wct.hook('prepare:webserver', function(app, done) {
var proxy = require('express-http-proxy');
app.use('/api',
proxy('pas.dev', {
forwardPath: function(req, res) {
return require('url').parse(req.url).path;
}
})
);
done();
});
Эта функция регистрации ловушки позволяет вам предоставить маршрут (/api в моем случае), который он передает на сервер, который может запускать сценарии php.