Попытка настроить Grunt для автоматизации некоторых тестов, тестирование отлично работает в браузере, но не в командной строке.

В настоящее время я пытаюсь включить GruntJS с несколькими плагинами (плагины PhantomJS Qunit и Connect). Однако настройка простого теста выдает мне ошибки, и я не могу найти решение, несмотря на несколько дней поиска. Я использую локальный веб-сервер (MAMP), а сайт работает на CMS.

Запуск тестов путем доступа к тестовому шаблону в браузере работает нормально, но при попытке доступа к тем же инструментам через командную строку с использованием sudo grunt test PhantomJS возвращается странная ошибка:

Running "qunit:all" (qunit) task
Testing http://user-guides:80/test/test.html 
Warning: PhantomJS timed out, possibly due to a missing QUnit start() call. Use --force to continue.

Aborted due to warnings.

В некоторых из моих поисков люди понижали версию phantom.js для решения подобных проблем, но пока ни одно из этих решений не сработало для меня, и я боюсь, что я что-то упускаю прямо перед моим лицом.

Вот содержимое моего Gruntfile.js

    module.exports = function(grunt) {

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),   
        connect: {
            server: {
                options: {
                    hostname: 'user-guides',
                    port: 80,
                    base: 'public'
                }
            }
        },
        jshint: {
            all: ['Gruntfile.js', 'public/assets/js/helper/*.js', 'public/assets/js/specific/*.js']
        },
        qunit: {
        all: {
          options: {
            timeout: 5000,
            urls: [
              'http://user-guides:80/test/test.html',
            ]
          }
        }
    }
    }
    );

    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-qunit');
    grunt.loadNpmTasks('grunt-contrib-connect');
    grunt.registerTask('test', ['connect', 'qunit']);
};

Вот простой тест Qunit

<html>
<head>
  <meta charset="utf-8">
  <title>Tests</title>
  <link rel="stylesheet" href="/assets/lib/qunit.css">
</head>
<body>
  <div id="qunit"></div>
  <script src="/assets/lib/qunit.js"></script>

  <script>
console.log("====TEST===");
    start();
    test( "hello test", function() {
      ok( 1 == "1", "Passed!" );
    });
  </script>
</body>
</html>

Любая помощь приветствуется.


person TrevorP    schedule 17.09.2013    source источник
comment
Вы на какой ОС? Вы уверены, что PhantomJS работает без ошибок? Проверьте, что PhantomJS работает без ошибок, выполнив здесь bin-файл из строки cmd: node_modules/grunt-contrib-qunit/node_modules/grunt-lib-phantomjs/node_modules/phantomjs/bin   -  person badsyntax    schedule 17.09.2013
comment
Я использую ОСХ. Я понял, что у меня в PATH нет PhantomJS, и я добавил его для использования PhantomJS прямо из командной строки, и тест с использованием phantomjs loadspeed.js http://www.google.com работает правильно. Я действительно озадачен этим.   -  person TrevorP    schedule 17.09.2013
comment
@TrevorP, ты в конце концов понял это? Думаю у меня такая же проблема...   -  person Alamgir Mand    schedule 21.01.2014


Ответы (1)


В моем файле test.html я изначально просто скопировал пример из QUnit Cookbook.

Найдя аналогичную (возможно, ту же) проблему здесь: https://stackoverflow.com/a/25053808/1814739

я обновил:

<script src="//code.jquery.com/qunit/qunit-1.15.0.js"></script>

to:

<script src="http://code.jquery.com/qunit/qunit-1.15.0.js"></script>

Запуск из командной строки, похоже, работает после добавления http: в атрибут src.

person ooXei1sh    schedule 28.10.2014
comment
Решил проблему, спасибо - person Dominik Feininger; 03.11.2014
comment
Я искал часы, чтобы решить эту проблему. Спасибо. Ошибка очень вводит в заблуждение - person Möhre; 02.01.2015
comment
Спасибо, Господь Дьявол, за то, что научил меня после тысячи часов тому, что я должен был префикс URL-адреса с HTTP: // - person Ismael; 29.07.2015