Entwicklung von Discourse-Plugins - Teil 6 - Akzeptanztests hinzufügen

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 „Gefällt mir“

Install Chrome and then give it another try.

1 „Gefällt mir“

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 „Gefällt mir“

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 „Gefällt mir“

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 ?

Ich versuche, dieser Anleitung zu folgen, bleibe aber gleich am Anfang stecken: Ich kann /qunit überhaupt nicht aufrufen. (Dies scheint auch mit Install Discourse on Ubuntu or Debian for Development zusammenzuhängen, was im Grunde der Ansatz ist, den ich verwende, um Discourse auf meinem lokalen Rechner für Lernzwecke bereitzustellen, aber diese Anleitung ist der Auslöser für mein Hindernis, daher dachte ich, ich würde es hier posten.) Der Versuch, darauf zuzugreifen, führt zu der Antwort „Diese Seite existiert nicht oder ist privat“.

Der Controller für die Route /qunit (discourse/app/controllers/qunit_controller.rb at 166fe3bb34f99bd0baa613726486ce0f13c7a992 · discourse/discourse · GitHub) erwähnt, dass er # nur im nicht-Ember-CLI-Test / Dev verwendet wird (der Kommentar vor dieser Methode), daher habe ich versucht, die Instanz mit RAILS_ENV=test bundle exec rails server auszuführen, aber EmberCli.enabled? ist immer noch true.

Welchen Ansatz verwendet ihr, um einen lokalen Entwicklungsserver auszuführen, damit wir tatsächlich auf /qunit zugreifen können (was wahrscheinlich das Deaktivieren von EmberCLI beinhaltet)? (Ich vermisse vielleicht etwas Offensichtliches.)

2 „Gefällt mir“

Der neue Pfad ist /tests. Ich werde die OP aktualisieren – danke!

4 „Gefällt mir“

Großartig, danke! Weiter zum nächsten Hindernis:

Dieser direkte Link zum jeweiligen Akzeptanztest gibt den Fehler (mit Backtrace) aus:

Error: No tests matched the module "Acceptance: Purple Tentacle".

Tatsächlich sehe ich bei der Suche in der Auswahlliste “Module:” nichts, das mit “purple” oder “Purple” übereinstimmt. Gibt es einen neuen Teil des Systems zur Registrierung von Plugins oder deren Tests, der hier möglicherweise fehlt?

Wenn ich mit dem Textfeld “Filter:” nach “purple” suche, gelange ich zur folgenden URL: http://localhost:4200/tests?filter=purple, was einen anderen Fehler ergibt:

Error: Could not find module `helpers/qunit-helpers` imported from `discourse/plugins//acceptance/purple-tentacle-test`
    at missingModule (http://localhost:4200/assets/vendor.js:259:11)

Haben Sie Ideen, was hier nicht stimmt?

Nebenbei bemerkt, verwendet die /tests-URL die Catch-all-Route get "*url", to: 'permalinks#show' und damit Permalink.find_by_url, um sie tatsächlich aufzulösen? Wenn ja, an welchem Punkt der Discourse-Initialisierung wird die /tests-URL-Zuordnung in die Datenbank geladen?

@jlc, vielen Dank, dass Sie unseren Leitfaden ausprobiert und uns auf dem Laufenden gehalten haben. :meow_heart:

Ich habe einige Änderungen am Beispiel-Akzeptanztest des OP vorgenommen, um einige neue Änderungen widerzuspiegeln, die wir für Akzeptanztests verwenden. Im Wesentlichen sind die beiden Änderungen:

  • Importe und
  • die Verwendung der needs-Konstante innerhalb von acceptance

Das sollte die meisten der von Ihnen erwähnten Probleme lösen. Sie können auch einige der needs-Optionen hier nutzen:

Es wäre auch sehr hilfreich, die gesamte qunit-helpers-Datei durchzusehen!

1 „Gefällt mir“