Как заменить сервер в тестере веб-компонентов

У меня есть проект, основанный на Polymer Starter Kit, который включает Web-Component-Tester.

Этот проект включает в себя код сервера PHP, который я также хотел бы протестировать, написав тесты для запуска в браузере, которые будут использовать код сервера PHP через вызовы Ajax.

Это подразумевает замену сервера, который тестер веб-компонентов использует ТОЛЬКО при тестировании кода на стороне сервера. Я надеюсь сделать для этого отдельную задачу gulp.

К сожалению, я не понимаю взаимосвязь между WCT, Selenium и тем сервером, который сейчас работает. Я вижу, что команда WCT запускает Selenium, но я не могу понять, что такое веб-сервер и как он запускается. Я подозреваю, что это WCT, потому что есть конфигурация сопоставления каталогов с URL-адресами, но кроме этого я понятия не имею, несмотря на попытку прочитать код.

Может кто-нибудь объяснить, как мне заставить его запускать собственный сервер при тестировании клиента, но полагаться на уже настроенный веб-сервер (nginx) при запуске сервера. Я могу настроить nginx для запуска с локального хоста или другого домена, если это способ выбрать другую конфигурацию.

РЕДАКТИРОВАТЬ: теперь я обнаружил, что runner/webserver.js запускает экспресс-сервер, и что URL-адреса сопоставляются, поэтому базовый каталог для тестового бегуна и каталог Bower_components сопоставляются с URL-адресом /components.

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


person akc42    schedule 03.11.2015    source источник


Ответы (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-скрипты.

person akc42    schedule 06.12.2015