2015-02-10 1 views
0

Возникли проблемы объясняя это:непоследовательные SVG элементов из Highcharts делает тесты не с Гебом/Selenium и PhantomJS

Моего Геба/Селен тесты делают утверждения на SVG rect элемента ширина/высоту, порожденную Highcharts.

Тесты проходят локально на Chrome/Windows и передаются PhantomJS в среде Linux CI. Однако они не работают, когда я запускаю их на PhantomJS локально в Windows. Высота, по-видимому, составляет несколько пикселей - последовательно, она составляет около 1 или 2 пикселя, когда я запускаю локально на PhantomJS в Windows. Например, мое утверждение о том, что rect.height=168 терпит неудачу, потому что это 166.

Я подтвердил, что это та же версия PhantomJS в обеих средах.

Что еще я могу пропустить? И что может заставить Highcharts генерировать различные SVG в Chrome и PhantomJS?

Я могу выделить это из испытательной базы и выполнить с PhantomJS непосредственно:

var webpage = require('webpage'); 
var page = webpage.create(); 
page.viewportSize = {width: 1280, height: 1024}; 

page.open("http://www.highcharts.com/demo/column-basic", function(status) { 
    var height = page.evaluate(function() { 
     return jQuery('g.highcharts-series rect:nth(0)').attr('height'); 
    }); 
    console.log(height); 
    phantom.exit(); 
}); 

Этот код выведет 52 при запуске на Linux и 53, когда для Windows.

+0

могут быть связаны с различными настройками DPI в Linux (75), Mac (72) и окна (96). Если это действительно так, вам нужно будет изменить константы в исходном коде и перекомпилировать его. –

+0

Похоже, это может быть какая-то проблема округления. Я не понимаю, почему Chrome в Windows соответствует PhantomJS на Linux, но PhantomJS на Windows отличается. – wrschneider

ответ

0

Это зависит от того, что вы собираетесь тестировать, но это может быть решением для адаптации к проблемам округления. Обнаружить базовую ОС и настроить объект конфигурации с корректировкой dpi на ОС.

var webpage = require('webpage'), 
 
    page = webpage.create(), 
 
    system = require('system'), 
 
    os = system.os, 
 
    correction = { 
 
    mac: 1, 
 
    windows: 1.019 
 
    }; 
 

 
page.viewportSize = { 
 
    width: 1280, 
 
    height: 1024 
 
}; 
 

 
page.open("http://www.highcharts.com/demo/column-basic", function(status) { 
 
    var height = page.evaluate(function() { 
 
    return jQuery('g.highcharts-series rect:nth(0)').attr('height'); 
 
    }); 
 

 
    console.log(Math.round(height * correction[os.name])); 
 

 
    phantom.exit(); 
 
});

 Смежные вопросы

  • Нет связанных вопросов^_^