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

У меня есть проект, основанный на 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.

Другие вопросы по тегам