2015-08-26 20 views
8

Ho test per an addon che passano in chrome, ma falliscono in phantomjs.test ember che passano in chrome, non in phantomjs

Sembra un problema simile a this question. Tuttavia, ho provato la soluzione lì e non ha funzionato per me.

Il codice è tutto disponibile nel repo pubblico collegato sopra. I fallimenti sono mostrati nella costruzione di travis malfunzionante su github. Qualche idea su come diagnosticare meglio e risolvere?

EDIT - messaggio di errore effettivo


 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

In seguito ad un suggerimento da @knownasilya, ho provato a forzare babele opzionale trasformare es6.spec.symbols on: in ember-cli-build.js:

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

Tuttavia, nessuna fortuna. Tuttavia sembra un problema di transpilation es6. Non ho superato l'opzione con successo? Qualche altro suggerimento? Sarò felice di pubblicare frammenti di codice se non vuoi guardare nel repository. :)

UPDATE 2

Compresi così:

+  includePolyfill: true 

opere!

Ora sono a:

 ReferenceError: Can't find variable: requestAnimationFrame 

Sto cercando un polyfill per questo pure ... ma guardando la configurazione Testem per ember-collection, che sembra avere una configurazione simile, io nota che il test di phantomjs è disattivato! Ora la domanda è: il modo migliore per testare requestAnimationFrame in phantomjs?

+1

Non è 'Simbolo' una funzione ES6, quindi uno spessore ES5 non sarebbe di aiuto. – knownasilya

+0

Ah ... Penso che tu abbia ragione: i test muoiono anche in Safari, che non supporta "Symbol". Ma ... ho bisogno di sapere di più sul processo di costruzione, ma Babel non dovrebbe aver già transpiled prima di scrivere in dist?Perché sta funzionando in chrome che ha anche un supporto es6 macchiato? – shaunc

+0

Quale libreria stai utilizzando che utilizza la funzionalità requestAnimationFrame? –

risposta

12

Il colpevole offendente è Can't find variable: Symbol, che è una funzione ES2015 (ES6), motivo per cui lo shim es5 non ha funzionato per voi.

Poiché babel non include i polyfill per impostazione predefinita, è necessario forzare ember-cli-babel per includere i polyfill.

// 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(); 
}; 

Per i dettagli sulle opzioni disponibili, vedere https://github.com/babel/ember-cli-babel#options

Per una soluzione più completa, dare babel6 (https://github.com/ember-cli/ember-cli/pull/6828) e gli obiettivi (https://github.com/ember-cli/ember-cli/pull/6776) una prova.

Nota: il polyfill include core.js che include i simboli.

+0

Ember-CLI v2.13 lancia questo avvertimento: 'DEPRECATION: l'opzione" includePolyfill "in" babel "è deprecata, per favore mettila in" ember-cli-babel "invece., Ma la risposta funziona ancora per risolvere il problema problema. Sposta 'includePolyfill: true' alla nuova chiave' "ember-cli-babel" 'nell'hash delle opzioni per eliminare l'avviso. Usa le virgolette. –

+0

Grazie per quello, ho dimenticato di aggiornare questo post :) – knownasilya