Sviluppo di plugin Discourse - Parte 6 - Aggiungi test di accettazione

LOAD_PLUGINS=1 QUNIT_SKIP_CORE=1 QUNIT_SINGLE_PLUGIN='discouse-humble-box' /home/ravenstorm/.rbenv/versions/2.5.3/bin/rake qunit:test
Chrome is not installed. Download from https://www.google.com/chrome/browser/desktop/index.html
rake aborted!
Command failed with status (1): [LOAD_PLUGINS=1 QUNIT_SKIP_CORE=1 QUNIT_SIN...]
/home/ravenstorm/discourse/lib/tasks/plugin.rake:117:in `block in <main>'
Tasks: TOP => plugin:qunit
1 Mi Piace

Install Chrome and then give it another try.

1 Mi Piace

Oh sorry i’ve pasted an old error code which i had stored in a pastebin :frowning_face:

navigate to http://localhost:60099/qunit?qunit_single_plugin=discouse-humble-box&qunit_skip_core=1&seed=187998423095278311109560784485973475676
Tests timed out
rake aborted!
Command failed with status (124): [node /home/ravenstorm/discourse/vendor/ass...]
/home/ravenstorm/discourse/lib/tasks/qunit.rake:89:in `block in <main>'
Tasks: TOP => qunit:test
(See full trace by running task with --trace)
rake aborted!
Command failed with status (1): [LOAD_PLUGINS=1 QUNIT_SKIP_CORE=1 QUNIT_SIN...]
/home/ravenstorm/discourse/lib/tasks/plugin.rake:117:in `block in <main>'
Tasks: TOP => plugin:qunit

Try running the test in the browser as David suggested earlier. So, in your browser, when the server is running, go to your-local-site/qunit. Very often, for me, timeouts in the Terminal have errors in JS that I could see and fix after visiting /qunit on the browser.

Thats one of the problems :smiley:

I can’t find acceptance tests on my /qunit

Even after turning on all modules and filtering it with box and humble nothing is here :slightly_frowning_face:

Try renaming the folder to test/javascripts/acceptance - that extra s is quite important!

https://github.com/discourse/discourse/blob/cd0403174dd88b0d1619ee7a53b42bc600bd69d1/lib/plugin/instance.rb#L463

You might need to do rm -rf tmp, and then restart your development server for the changes to take effect.

1 Mi Piace

Do what David said above (rename the folder to javascripts), but ALSO, change the name of your plugin in plugin.rb to discourse-humble-box to match the folder name. I did these two changes, and I see tests locally:

4 Mi Piace

Yea i’ve seen those as well now, but these aren’t really eye-opening results tbh.

But gotta dig deeper and lookup why these errors are shown.

Thanks for the help guys.
For example the second test case… if i am testing it myself by hand… it works, but running it on qunit it fails :frowning:

Ok, got a brief idea whats bringing me the errors and it confuses me:
http://localhost:9292/ in my browser has the plugin installed and working
http://localhost:9292/qunit the test shows, that the plugin is not even installed

I thought these two are using the same enviroment ?
Could this be caused by my local dev-enviroment since it’s not using docker and I’m not able to install the plugin like Install Plugins in Discourse ? It’s just sitting in the plugins folder like the others.

Any idea how this is possible ?

Sto cercando di seguire questa guida, ma mi blocco proprio all’inizio: non riesco ad accedere a /qunit. (Questo sembra anche correlato a Install Discourse on Ubuntu or Debian for Development, che è fondamentalmente l’approccio che sto usando per distribuire Discourse sulla mia macchina locale per imparare lo sviluppo, ma questa guida è il prompt che ha innescato il mio ostacolo, quindi ho pensato di metterlo qui.) Tentare di accedervi restituisce una risposta “Questa pagina non esiste o è privata”.

Il controller per la route /qunit (discourse/app/controllers/qunit_controller.rb at 166fe3bb34f99bd0baa613726486ce0f13c7a992 · discourse/discourse · GitHub) menziona che è # only used in non-ember-cli test / dev (il commento prima di quel metodo), quindi ho provato a eseguire l’istanza con RAILS_ENV=test bundle exec rails server, ma EmberCli.enabled? è ancora true.

Quale approccio state usando per eseguire un server di sviluppo locale in modo da poter effettivamente accedere a /qunit (che probabilmente comporta la disabilitazione di EmberCLI)? (Certamente potrei star perdendo qualcosa di ovvio.)

2 Mi Piace

Il nuovo percorso è /tests. Aggiornerò l’OP - grazie!

4 Mi Piace

Fantastico, grazie! Si passa al prossimo ostacolo:

Questo link diretto al particolare test di accettazione restituisce l’errore (con un backtrace):

Errore: Nessun test corrisponde al modulo "Acceptance: Purple Tentacle".

Infatti, quando cerco nel menu a discesa “Modulo:”, non vedo nulla che corrisponda a “purple” o “Purple”. C’è una nuova parte del sistema per la registrazione di plugin o dei loro test che potrebbe mancare qui?

Se cerco “purple” usando la casella di testo “Filtro:”, mi porta al seguente URL: http://localhost:4200/tests?filter=purple, che mi restituisce un errore diverso:

Errore: Impossibile trovare il modulo `helpers/qunit-helpers` importato da `discourse/plugins//acceptance/purple-tentacle-test`
    at missingModule (http://localhost:4200/assets/vendor.js:259:11)

Hai qualche idea su cosa potrebbe essere fuori posto qui?

Come nota a margine, l’URL /tests utilizza il route catch-all get "*url", to: 'permalinks#show' e quindi Permalink.find_by_url per risolvere effettivamente? Se è così, in quale punto dell’inizializzazione di Discourse viene caricata la mappatura dell’URL /tests nel database?

@jlc, grazie mille per aver provato la nostra guida e per averci tenuti aggiornati. :meow_heart:

Ho apportato alcune modifiche al test di accettazione di esempio dell’OP per riflettere alcune nuove modifiche che stiamo utilizzando per i test di accettazione. Essenzialmente, le due modifiche sono

  • importazioni e
  • l’uso della costante needs all’interno di acceptance

Ciò dovrebbe risolvere la maggior parte dei problemi che hai menzionato. Puoi anche utilizzare alcune delle opzioni needs qui:

Dare un’occhiata all’intero file qunit-helpers sarebbe anche molto utile!

1 Mi Piace