Commit graph

4789 commits

Author SHA1 Message Date
thiemowmde d6a58cfa8d Add initial QUnit tests relevant for reference re-use in VE
Note these are more meant as regression test to better cover what's
done in other patches. Everybody should feel free to delete a test
when it gets in the way. I marked a few especially fragile places
with respective comments.

Bug: T358652
Change-Id: I7844907fe3ef4f3439717381b4ecdac9e2d0a825
2024-03-21 09:37:26 +01:00
Translation updater bot 9bc74e7694 Localisation updates from https://translatewiki.net.
Change-Id: I2d2a414f5fa41f47d6418302e8712bf2e1f30aba
2024-03-21 08:54:27 +01:00
Translation updater bot e6f17fd477 Localisation updates from https://translatewiki.net.
Change-Id: Icb746719a0a9d1b12c9ab23577a6fb4068c0957a
2024-03-20 08:23:14 +01:00
Adam Wight a8d0387de7 Skip tests causing trouble in the wild
Please don't reenable until we have some confidence that these aren't
flapping.

Bug: T360026
Bug: T360361
Change-Id: I54f80e31b4fca4c1c4632af1d43e22a88ae5f218
2024-03-19 14:49:33 +01:00
WMDE-Fisch 463e25b742 [Cypress] Streamline some selectors and click paths
Change-Id: I9c897f3c94a44f50de5c7a31822645a52cb3d70d
2024-03-19 11:33:23 +00:00
WMDE-Fisch 5f3246ee38 [Cypress] Move read-only cite tests to one set
We don't need to setup a fresh page on every test when we're not
manipulating the page during the tests. This will make test run
faster overall.

Change-Id: I4f41f0bf7b01f5a8498fda4827b90c9976cbd528
2024-03-19 11:33:19 +00:00
WMDE-Fisch 00147fb1fe [Cypress] Split before steps to fix retries
When the tests run into an issue and are re-run only beforeEach
will be executed. Also cookies are not kept for the re-run.

This patch makes sure that steps needed to have a clean re-run are
split to the beforeEach

Change-Id: I47cba7f6ec240fefa09a4484bca0a621b99f2bcb
2024-03-19 12:24:20 +01:00
WMDE-Fisch 10fac9d1b5 [Cypress] Create some more helpers for generic setup code
Bug: T358851
Change-Id: I39ddcaf8e3684c4057639e014c18e1b1473e7b12
2024-03-19 10:24:23 +01:00
jenkins-bot f4c3f64e24 Merge "Try more specific CSS selectors for clicks in browser tests" 2024-03-19 09:17:18 +00:00
Translation updater bot 8dff3e20c5 Localisation updates from https://translatewiki.net.
Change-Id: I512a36ea005567c4acd4b5d158720922307a8351
2024-03-19 08:24:41 +01:00
jenkins-bot ca501ec1cf Merge "[Cypress] Increase default timeout" 2024-03-18 10:47:49 +00:00
jenkins-bot 5d03b8e356 Merge "[Cypress] Check toolbar state to wait for VE" 2024-03-18 10:46:08 +00:00
jenkins-bot dbff601ebf Merge "Remove obsolete @method annotations" 2024-03-18 10:00:17 +00:00
Translation updater bot 8871c1b83f Localisation updates from https://translatewiki.net.
Change-Id: I516d32a274feb3a715998c5f9acad6249ab3b593
2024-03-18 07:45:22 +00:00
libraryupgrader 0da4ca4b79 build: Updating mediawiki/mediawiki-codesniffer to 43.0.0
Change-Id: I98296a1ed937c8a617bc47c68c913cd7baca6245
2024-03-17 15:52:37 +00:00
WMDE-Fisch 4fafba2ee3 [Cypress] Check toolbar state to wait for VE
We need to wait for the UI to be finished loading before we can
interact with it. Here I implemented how it's done in the VE
selenium tests. They seemed to have similar issues with flaky
tests before they introduced what I use here now.

See I321b4114ca03ebd02a79d8bd3863ea0e68494dc2

Bug: T360026
Change-Id: I91bc104ef7af4c74765c2c354eeadeacef162309
2024-03-15 20:56:08 +01:00
WMDE-Fisch c86509d1be [Cypress] Increase default timeout
Might help in some edge cases where elements need just a bit longer
to load and be available.

Bug: T360026
Change-Id: I60176435963c708d13ce7fd3e0691cb6e7a35fb1
2024-03-15 19:21:14 +00:00
jenkins-bot 974401489d Merge "Move reference previews to Cite extension" 2024-03-15 19:15:16 +00:00
thiemowmde 7a9a48b1e0 Improve test coverage for incomplete follow=… rendering
There is currently no test coverage for recursively parsing the
contents of a <ref>…</ref> together with an incomplete follow="…".
This is critical because that's an entirely separate, special code
path (the one that creates a <p> instead of an <li>). Without this
 test we could return unparsed wikitext and never notice.

I discovered this while playing with I0b0e358.

Bug: T245549
Change-Id: Ie65c6bf6bf75db26e0fff733c93cfa28ee7bd228
2024-03-14 15:31:29 +01:00
thiemowmde 9e1c4645be Add strictly typed RefGroupItem class to Parsoid code
This does the exact same as the previously used generic stdClass
object, just strictly typed. Turned out to be surprisingly
straightforward, as proven by the small size of this patch.

I'm intentionally not adding anything new in this patch. For
example, the new class is perfect to write longer documentation
for every field. But this is for a later patch.

Change-Id: Ibf696f6b5ef1bfdbe846b571fb7e9ded96693351
2024-03-14 11:59:34 +01:00
thiemowmde 90e00acc18 Try more specific CSS selectors for clicks in browser tests
The main change here is the "enabled". Don't try to click the button
as long as it is disabled. This is critical because VisualEditor
takes a while to boot. The toolbar is already visible, but disabled.

Warning, untested! It makes sense in my head but I'm not sure if it
works.

Bug: T360026
Change-Id: Ib46d420a56effd4b4a0e48e2121106a830e5f51c
2024-03-14 10:26:28 +01:00
jenkins-bot 52df9bd54f Merge "Skip reuseRefs test until we can debug" 2024-03-14 09:13:36 +00:00
jenkins-bot 2f1b3477f7 Merge "Remove broken CSS for ve.ui.MWReferenceGroupInputWidget" 2024-03-14 09:07:48 +00:00
Translation updater bot 5b7e331563 Localisation updates from https://translatewiki.net.
Change-Id: Ia5d8a16095d0a5893728799260bec416226e6e59
2024-03-14 09:02:36 +01:00
jenkins-bot cb725645ea Merge "Fix broken deletion of non-existing <ref refGroup="…">" 2024-03-13 16:37:43 +00:00
jenkins-bot c47627b9df Merge "Add basic PHPUnit tests for Parsoid implementation" 2024-03-13 14:59:43 +00:00
Adam Wight 551d80e20e Skip reuseRefs test until we can debug
Bug: T360026
Change-Id: I21c642dac333e9a157c0ead32022de1fadc916bd
2024-03-13 13:52:37 +01:00
Translation updater bot 985337c108 Localisation updates from https://translatewiki.net.
Change-Id: Ie6bbca7c132abe9e507be38eae026a6c41ea376a
2024-03-13 08:25:16 +01:00
Jon Robson dcb513eb0e Move reference previews to Cite extension
The ext.cite.referencePreviews module will transparently replace the
ext.popups.referencePreviews module after this patch.  Configuration
stays in Popups for now, we can migrate it in later work.

CSS classes may be renamed in the future but this will be handled
separately since it could be a breaking change for on-wiki
customizations.

A lot of fancy footwork happens in this patch to emulate a soft
dependency on Popups.  This mechanism doesn't exist explicitly in
either ResourceLoader or QUnit, so lots of workarounds are used, to
conditionally load the module and to dynamically skip dependent tests.

renderer.test.js is fully skipped for now, but can be wired up in
later work.

Bug: T355194
Change-Id: I0dc47abb59a40d4e41e7dda0eb7b415a2e1ae508
2024-03-12 17:43:51 +01:00
thiemowmde fa77ef25bd Remove broken CSS for ve.ui.MWReferenceGroupInputWidget
This CSS exists since I2ab47e7 from August 2014. The original idea
was to dim the default "General references" when you edit a <ref> or
<references> list in VisualEditor.

Steps to reproduce:
* Start VisualEditor.
* Edit a <ref> or <references> list.
* Edit the group.
* You will see the dimmed text "General references". This is not the
  CSS in this patch, but the default styling for OOUI placeholders.
* Open the dropdown. The list will show a "General references" item.
  It's not dimmed. This is where the CSS was meant to be.

The CSS class name in the OOUI mixin was actually changed from
"oo-ui-flaggableElement-…" to "oo-ui-flaggedElement-…" via I1abecd8,
just a few days later.

In addition the selector wouldn't work anyway for other reasons.
The dropdown is not inside the `.ve-ui-mwReferenceGroupInputWidget`
container any more but placed outside by the OOUI window manager.
And the selector's specifity is to low, at least since Ic57b3ff.

I argue it's not worth fixing it. Nobody missed it for 10 years.
Light gray text would be illegible anyway on the light gray/light
blue backgrounds used in the dropdown menu. Let's consider it dead
code and just remove it.

The class name doesn't appear anywhere else (any more):
https://codesearch.wmcloud.org/search/?q=flaggableElement

Change-Id: Ia802303737ba35cd4b14fae924b7227472f905fd
2024-03-12 16:36:22 +01:00
thiemowmde ae786bc2ef Fix broken deletion of non-existing <ref refGroup="…">
This can be quite confusing:
* A node does have attributes. One of the attributes is called
  "refGroup", another one "mw".
* mw contains a JSON structure with just a few elements, most
  notably a "body" and an "attrs" element. These reflect what was
  originally written in the wikitext.
* mw.attrs reflects the original properties a.k.a. attributes from
  the <ref …> or <references …> tag.

Deleting mw.refGroup doesn't do anything because the attribute is
called <ref group="…"> in the wikitext, not <ref refGroup="…">.

You can actually see this bug in action on all wikis: Go to a page
that uses references in non-standard groups, e.g.
https://en.wikipedia.org/wiki/Historic_Cherokee_settlements
Start VisualEditor. Find e.g. the [notes 1] reference. Edit it
and change the group from "notes" to "General references". Click
"Publish…" and "Review" your changes. The visual diff works because
it apparently uses other information. The wikitext diff is empty.
This is also what's saved: nothing. The edit is lost.

Bug: T359943
Change-Id: I798605d2fd60a6b8f317ec85a4e4d08fd245e084
2024-03-12 14:44:00 +00:00
jenkins-bot 66d73af276 Merge "Clean up top-level docs" 2024-03-12 12:51:55 +00:00
jenkins-bot 24cd760b5a Merge "Create end to end test for reference re-use in VE" 2024-03-12 11:27:12 +00:00
Adam Wight ba137fba88 Clean up top-level docs
* Include the README in generated JS docs.
* Tweak stray top-level files to explain their role.  Note that the
wmf template forces these files to appear on the docs home page...

Bug: T358641
Change-Id: If421414340903991f50a06a76551bd7cd2904c5e
2024-03-12 12:23:18 +01:00
mareikeheuer ce3e7b8eb8 Create end to end test for reference re-use in VE
Created following test cases:
Scenario: I am a user that wants to re-use refs in VisualEditor
-should display existing references in the Cite re-use dialog
- should display re-used reference in article with correct footnote number and notification in context dialog
- should display correct ref content and name attribute for re-used ref with existing name attribute
TODO:
- run several rechecks to observe flakiness issues
- add remaining test cases (copy paste & cut paste)

Bug: T356858
Change-Id: Ib1b64c44b21471404a7c51752fb5899119b4b533
2024-03-12 10:22:04 +01:00
thiemowmde 650d2c296d Add basic PHPUnit tests for Parsoid implementation
There is much more to test, but it's a start.

Intentionally build as pure unit tests to make them as fast as
possible.

Bug: T354215
Bug: T358652
Change-Id: Iae1a8086b8f2b9e5b11e0117bd3f19fdaa087df0
2024-03-12 09:06:16 +00:00
thiemowmde 644597c402 Move Parsoid-specific CSS into a subdirectory
The first two files have been added to the root modules/ directory
via I487095d in 2015. No problem.

Many, many more files have been added via I000b453 in 2022. It's
really hard to tell what is what since then.

I'm not absolutely sure what the naming convention for this folder
should be. Could as well be "localized-styles/" or just "Parsoid/".

Bug: T156350
Change-Id: Ibcf8c7a6db5400ed8a9811244a070e03ff372a39
2024-03-11 12:42:25 +00:00
Translation updater bot 7b308564e0 Localisation updates from https://translatewiki.net.
Change-Id: I1273544798e72192a48ab0219f7e1748ffb95e33
2024-03-11 08:26:28 +01:00
thiemowmde 2b32f15c8c Allow visualeditor-cite-tool-name-… messages to be missing
The information read from the …cite-tool-definition.json files is
effectively user input, even if only interface administrators can
edit it. Usually we carefully validate user input. But as of now
this code starts failing with all kinds of uncatched errors.
* An entry with no name, an empty name, or a name that's not a
  string will cause all kinds of undefined behavior.
* An entry with an empty title results in an invisible button.
* A missing message results in a technical <…> placeholder, even if
  the name is usually a sensible fallback.

Note that hard-coding titles as plain text strings in the ….json
file was already possible.

Change-Id: Iddcedbe859e86ac4c3f79a53d36237daff86c0db
2024-03-06 14:21:08 +01:00
Translation updater bot 61880c7535 Localisation updates from https://translatewiki.net.
Change-Id: I54e5010e221d9882fdc2ba16b8a79c34e2109011
2024-03-06 08:19:31 +01:00
thiemowmde c02595bb97 Drop obscure error message about an unused group
The message was part of the original patch that introduced the group
feature in 2009, see https://phabricator.wikimedia.org/rECIT75004e33.
Notice how there was never a test scenario for this message. A test
was added in 2020 via I07738cc.

The message appears only in a rare edge-case when a group is entirely
unused in the text, and only when the group is not empty. The shortest
possible example is:

 <references group=g>
 <ref group=g name=a>a</ref>
 </references>

Just adding something unrelated like `<ref group=g>x</ref>` to the
text changes the error message. Now the group is "used". But this
notion is confusing to begin with. References can be part of a group,
and we can use references, but we can't use groups as if they are a
separate entity.

A better error message already exists.

Notice how this special error message doesn't appear anywhere in the
Parsoid code path. That was already using the other, more generic
error message.

Bug: T269531
Change-Id: I63f663d76e45e6c3d664f145d9a564ee00ff53cd
2024-03-04 13:04:36 +01:00
thiemowmde e5eee2d049 Fix confusing error message with empty group
This is about the error message that currently says:

 »Cite error: <ref> tag with name "a" defined in <references> has
  group attribute "" which does not appear in prior text.«

This is a special error message that appears only when a group name
does not appear anywhere in the text. In all other cases a simpler
error message is shown:

 »Cite error: <ref> tag with name "a" defined in <references> is
  not used in prior text.«

While the first error message is not wrong in the edge-case
described in T269531, it's very confusing for a multitude of
reasons. For example:
* There is no group attribute in the wikitext.
* Just adding something completely unrelated like `<ref>x</ref>` to
  the text shows the other error message.

The reason for this behavior is that the assumed default is an empty
`group=""`. The error message changes the moment any other <ref> in
the same group appears in the text vs. when the group is entirely
unused.

We can probably remove this error message entirely, but should at
least not use it when there is no group.

Notice how the Parsoid code path was already using the other error
message.

Bug: T269531
Change-Id: Ifa2e97254f4cda72233a057d8760fb1116143552
2024-03-04 12:43:26 +01:00
Translation updater bot 15663dc283 Localisation updates from https://translatewiki.net.
Change-Id: I8eb8c35e3283224b8101ea59b421648f4dca24ad
2024-03-04 08:23:03 +01:00
jenkins-bot c30dbd9875 Merge "Use Types/#jQuery for external docs" 2024-03-01 08:42:47 +00:00
Translation updater bot aa1c82a1e3 Localisation updates from https://translatewiki.net.
Change-Id: I4ea5452e8cce05b60711813359dd162590f3425b
2024-03-01 08:32:41 +01:00
WMDE-Fisch c5e7fd35ea Use Types/#jQuery for external docs
Missed while merging Ia0a52cc7459d4e985349e8c0e4656f68e25d8afb
into Iaee1dadcc19a70c27839d0d27dfa6a07a70fb46b

Change-Id: I0a429a52bcf04bac9cc63cb5856f4c8fdd06b1fa
2024-02-29 18:57:36 +01:00
jenkins-bot 20d0b82969 Merge "Minor logic cleanup" 2024-02-29 12:43:26 +00:00
Adam Wight 8d0202a664 Minor logic cleanup
This didn't mean what it looked like: `||` has higher priority, so an
undefined elem would not result in an empty string.

Change-Id: I1e361842f060815b04802a1ab8f077faa1a8bc6b
2024-02-29 12:12:56 +00:00
Adam Wight 5c7e7f4fbd linters should ignore generated docs
Change-Id: Ice9eef1ba6e2b158ab3f7a9f45a4d1a7a41824b8
2024-02-29 12:09:09 +00:00
Adam Wight 73c90a0e7d Clean up and fix some jsdoc annotations
Some of the annotations were used in a way that confused jsdoc.  This
cleans up redundant annotations and uses more canonical tags.

These changes cause all classes to now appear in the generated pages.

Includes linking to external docs.

Bug: T358641
Change-Id: Iaee1dadcc19a70c27839d0d27dfa6a07a70fb46b
2024-02-29 13:05:42 +01:00