2015-08-26 11 views
8

Ich habe Tests für an addon, die in Chrom übergeben, aber in phantomjs fehlschlagen.ember testet vorbei chrom, nicht in phantomjs

Es scheint ein Problem ähnlich wie this question zu sein. Allerdings habe ich die Lösung dort ausprobiert und es hat nicht für mich funktioniert.

Der Code ist in dem oben verlinkten öffentlichen Repo verfügbar. Die Fehler werden in dem fehlerhaften Travis-Build auf GitHub gezeigt. Irgendwelche Ideen, wie man besser diagnostiziert und repariert?

EDIT - tatsächliche Fehlermeldung


 Died on test #1  at http://localhost:7357/assets/test-support.js:3062 
      at test (http://localhost:7357/assets/test-support.js:1945) 
      at test (http://localhost:7357/assets/dummy.js:2090) 
      at http://localhost:7357/assets/dummy.js:2885 
      at http://localhost:7357/assets/vendor.js:150 
      at tryFinally (http://localhost:7357/assets/vendor.js:30) 
      at http://localhost:7357/assets/vendor.js:156 
      at http://localhost:7357/assets/test-loader.js:29 
      at http://localhost:7357/assets/test-loader.js:21 
      at http://localhost:7357/assets/test-loader.js:40 
      at http://localhost:7357/assets/test-support.js:6775: Can't find variable: Symbol 

UPDATE

auf einem Hauch von @knownasilya Nach oben habe ich versucht, zwingen optional babel verwandeln es6.spec.symbols auf: in ember-cli-build.js:

module.exports = function(defaults) { 
    var app = new EmberAddon(defaults, { 
    // Add options here 
+ babel: { 
+  optional: ['es6.spec.symbols'] 
+ } 
    }); 

Allerdings - kein Glück. Es sieht jedoch wie ein es6-Übertragungsproblem aus. Habe ich die Option nicht erfolgreich bestanden? Irgendwelche anderen Hinweise? Ich werde gerne Code-Snippets veröffentlichen, wenn Sie nicht in das Repo schauen wollen. :)

UPDATE 2

Einschließlich auch:

+  includePolyfill: true 

funktioniert!

Jetzt bin ich auf:

 ReferenceError: Can't find variable: requestAnimationFrame 

Ich bin für eine polyfill dafür auch ... aber Blick auf die testem Konfiguration für ember-collection suchen, die eine ähnliche Konfiguration zu haben scheint, ich Beachten Sie, dass Phantomjs Test deaktiviert ist! Jetzt ist die Frage: der beste Weg, requestAnimationFrame in phantomjs zu testen?

+1

Ist 'Symbol' nicht eine ES6-Funktion, so würde ein ES5-Shim nicht helfen. – knownasilya

+0

Ah ... Ich denke du hast recht - Tests sterben auch in Safari, welches "Symbol" nicht unterstützt. Aber ... ich muss mehr über den Build-Prozess wissen, aber sollte nicht babel schon transpiled haben, bevor ich in dist schreibe?Warum funktioniert es in Chrom, das auch fleckige es6 Unterstützung hat? – shaunc

+0

Welche Bibliothek verwenden Sie, die die Funktion requestAnimationFrame verwendet? –

Antwort

12

Der schuldige Schuldige ist Can't find variable: Symbol, was eine ES2015 (ES6) -Funktion ist, weshalb das es5 shim für Sie nicht funktioniert hat.

Da babel standardmäßig keine Polyfills enthält, müssen Sie ember-cli-babel zwingen, die Polyfills einzuschließen.

// ember-cli-build.js 
const EmberApp = require('ember-cli/lib/broccoli/ember-app'); 

module.exports = function(defaults) { 
    const app = new EmberApp(defaults, { 
    'ember-cli-babel': { 
     includePolyfill: true 
    } 
    }); 

    return app.toTree(); 
}; 

Einzelheiten zu den verfügbaren Optionen finden Sie https://github.com/babel/ember-cli-babel#options

Für eine umfassende Lösung, geben babel6 (https://github.com/ember-cli/ember-cli/pull/6828) und Ziele (https://github.com/ember-cli/ember-cli/pull/6776) versuchen.

Hinweis: Das Polyfill enthält core.js mit Symbolen.

+0

Ember-CLI v2.13 gibt folgende Warnung aus: 'DEPRECATION: Die Option" includePolyfill "in" babel "ist veraltet, bitte geben Sie stattdessen" ember-cli-babel "an, aber die Antwort funktioniert immer noch Problem. Verschieben Sie 'includePolyfill: true' in den neuen Schlüssel' 'ember-cli-babel" 'im Optionen-Hash, um die Warnung zu eliminieren. Verwenden Sie die Anführungszeichen. –

+0

Danke dafür, vergaß diesen Beitrag zu aktualisieren :) – knownasilya