WordPress.org

Make WordPress Core

Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#27014 closed enhancement (fixed)

Incorporate the TinyMCE tests into our JS tests

Reported by: azaozz Owned by:
Milestone: 3.9 Priority: normal
Severity: normal Version:
Component: Build/Test Tools Keywords:
Focuses: javascript Cc:

Description

TinyMCE comes with a large number of unit tests. It also uses QUnit but the tests are set a bit differently.

Attachments (3)

27014.patch (4.0 MB) - added by azaozz 7 years ago.
27014.1.patch (3.9 MB) - added by azaozz 7 years ago.
27014.2.patch (3.9 MB) - added by azaozz 7 years ago.

Change History (12)

@azaozz
7 years ago

This ticket was mentioned in IRC in #wordpress-dev by azaozz. View the logs.


7 years ago

@azaozz
7 years ago

#2 @azaozz
7 years ago

Some of the files in 27014.1.patch are edited so TinyMCE can be loaded from /src/wp-includes/js. Also added a "WP" selection to the UI to deselect tests that do not apply to our integration (mostly the default plugins tests).

One advantage of having these tests is that we can add some more specifically for the schema, testing the backwards compatibility with HTML 4.

Open for ideas on how to tie the core tests with the TinyMCE tests. For now it is a link at the bottom of the core tests screen.

Last edited 7 years ago by azaozz (previous) (diff)

@azaozz
7 years ago

#3 @azaozz
7 years ago

In 27014.2.patch:

  • Add tests for obsolete HTML elements and attributes (html4 back-compat).
  • Exclude /tests/qunit/editor/* from Grunt tasks for now.

#4 @azaozz
7 years ago

In 27155:

Incorporate the TinyMCE tests into our JS tests:

  • Modified the original tests so TinyMCE can be loaded from /src/wp-includes/js/tinymce.
  • Added "WP" option to the UI to select only tests relevant to our integration (excludes most of the default plugins tests).
  • Added tests for obsolete HTML elements and attributes (html4 back-compat).

See #27014.

#5 @azaozz
7 years ago

In 27180:

TinyMCE tests: remove 'coverage' for now, has unsatisfied dependencies. Tweak the test runner so it auto-starts. See #27014.

#6 @azaozz
7 years ago

Running the TinyMCE tests from Grunt automatically together with the core tests won't work.

  • PhantomJS (used for core) cannot run TinyMCE properly. The reason is that a large part of TinyMCE deals with browser specific quirks and normalization. PhantomJS is WebKit based but is neither Chrome nor Safari. It works very well for "pure" JS but doesn't (and shouldn't) emulate browser specific quirks/problems with contenteditable, the DOM, etc.
  • Even if there is a JavaScript "runner" that emulates different browsers, don't think it will work well. We would be testing the quality of emulation together with the functionality in TinyMCE, and we need it for IE 7,8,9,10,11, latest Firefox, Chrome, Safari, iOS, Android, etc.

In that terms the best option is to run the TinyMCE tests by hand in all browsers. In Grunt we could launch the browser from Node.js and run the tests. Not sure if we want to go there though.

#7 @nacin
7 years ago

  • Resolution set to fixed
  • Status changed from new to closed

Yeah, I think [27180] is good for now.

#8 @azaozz
7 years ago

In 27679:

Update the TinyMCE tests.

In 4.0.20 all tests were reworked. The 'testrunner' was removed and the PhantomJS Runner QUnit plugin was added making it possible to run the tests from cli. However it is still necessary to run the tests in all supported browsers to test the fixes for all browser quirks and normalization. Also all tests are loaded in one html file.

See #27014

#9 @azaozz
7 years ago

In 27680:

Two files weren't deleted in [27679], see #27014

Note: See TracTickets for help on using tickets.