Page MenuHomePhabricator

ReviseTone.cy.ts flakily fails to find ve-ui-editCheck-gutter-action-warning
Open, HighPublic

Description

Summary

The ReviseTone.cy.ts test flakily fails to find the ve-ui-editCheck-gutter-action-warning element

Technical details

Example at https://integration.wikimedia.org/ci/job/quibble-with-gated-extensions-selenium-php83/24532/console#console-section-4 (kept forever):

Failing test
09:58:51   Revise Tone
09:58:54     On desktop
09:59:01       ✓ Shows the Revise Tone Edit Check (9862ms)
09:59:01       - Closes the Editor when declining Edits and suggests a new task
09:59:01       - Shows the Revise Tone Edit Check and tags edits
09:59:01     On mobile
09:59:30       1) Shows the Revise Tone Edit Check
09:59:30         cy:command ✔  visit	/index.php -> 301: http://127.0.0.1:9413/index.php?title=Main_Page
09:59:30         cy:command ✔  window	
09:59:30         cy:command ✔  assert	expected **<window>** to have property **mw**
09:59:30         cy:command ✔  window	
09:59:30         cy:command ✔  its	.mw.Api
09:59:30         cy:command ✔  assert	expected **[Function]** to exist
09:59:30         cy:command ✔  window	
09:59:30             cy:xhr ➟  POST http://127.0.0.1:9413/api.php
09:59:30                       Status: 200
09:59:30          cons:warn ❖  movePinnableElement: destination container not found ,
09:59:30                       vector-toc-unpinned-container
09:59:30             cy:xhr ➟  POST http://127.0.0.1:9413/api.php
09:59:30                       Status: 200
09:59:30         cy:command ✔  visit	/index.php -> 301: http://127.0.0.1:9413/index.php?title=Main_Page
09:59:30         cy:command ✔  window	
09:59:30         cy:command ✔  its	.mw.Api
09:59:30         cy:command ✔  assert	expected **[Function]** to exist
09:59:30         cy:command ✔  window	
09:59:30          cons:warn ❖  movePinnableElement: destination container not found ,
09:59:30                       vector-toc-unpinned-container
09:59:30             cy:xhr ➟  POST http://127.0.0.1:9413/api.php
09:59:30                       Status: 200
09:59:30         cy:command ✔  viewport	360, 780
09:59:30         cy:command ✔  visit	index.php?title=Special:Homepage/suggested-edits&mobileaction=toggle_view_mobile&mpo=growthexperiments-revise-tone:treatment -> 301: http://127.0.0.1:9413/index.php?title=Special:Homepage/suggested-edits&mpo=growthexperiments-revise-tone%3Atreatment
09:59:30         cy:command ✔  get	.se-card-title
09:59:30         cy:command ✔  assert	expected **<h3.se-card-title>** to have text **Kristallsee**
09:59:30                       Actual: 	"Kristallsee"
09:59:30                       Expected: 	"Kristallsee"
09:59:30         cy:command ✔  get	a.se-card-content
09:59:30         cy:command ✔  assert	expected **<a.se-card-content>** not to have attribute **href** with the value **#**
09:59:30         cy:command ✔  get	.suggested-edits-next .oo-ui-buttonElement-button
09:59:30         cy:command ✔  click	
09:59:30             cy:xhr ❖  GET http://127.0.0.1:9413/api/rest_v1/page/summary/Kristallsee
09:59:30                       Status: 404
09:59:30             cy:xhr ❖  GET https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/127.0.0.1/all-access/user/Kristallsee/daily/20260204/20260405
09:59:30                       Status: 404
09:59:30          cons:warn ❖  This page is using the deprecated ResourceLoader module "moment".
09:59:30                       [1.44] Use mediawiki.DateFormatter or native Intl function instead. See https://phabricator.wikimedia.org/T146798
09:59:30             cy:xhr ❖  GET http://127.0.0.1:9413/api/rest_v1/page/summary/Ma'amoul
09:59:30                       Status: 404
09:59:30             cy:xhr ❖  GET https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/127.0.0.1/all-access/user/Ma'amoul/daily/20260204/20260405
09:59:30                       Status: 404
09:59:30             cy:xhr ❖  GET http://127.0.0.1:9413/api/rest_v1/page/summary/Eldfjall
09:59:30                       Status: 404
09:59:30             cy:xhr ❖  GET https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/127.0.0.1/all-access/user/Eldfjall/daily/20260204/20260405
09:59:30                       Status: 404
09:59:30         cy:command ✔  get	.se-card-title
09:59:30         cy:command ✔  assert	expected **<h3.se-card-title>** to have text **Eldfjall**
09:59:30                       Actual: 	"Eldfjall"
09:59:30                       Expected: 	"Eldfjall"
09:59:30         cy:command ✔  get	a.se-card-content
09:59:30         cy:command ✔  assert	expected **<a.se-card-content>** not to have attribute **href** with the value **#**
09:59:30         cy:command ✔  get	a.se-card-content
09:59:30         cy:command ✔  click	
09:59:30         cy:command ✔  page load	--page loaded--
09:59:30         cy:command ✔  new url	http://127.0.0.1:9413/index.php?title=Eldfjall&getasktype=revise-tone&gesuggestededit=1&geclickid=qugd8ldm5i8rodkobe35r54ar6ipgk2a&genewcomertasktoken=jmnp0gblgrghe2vhni2hb2ehn20upf2p&mpo=growthexperiments-revise-tone%3Atreatment&veaction=edit&section=all
09:59:30         cy:command ✔  get	.ext-growthExperiments-ReviseToneOnboarding
09:59:30         cy:command ✔  assert	expected **<div.cdx-dialog.ext-growthExperiments-OnboardingDialog.ext-growthExperiments-ReviseToneOnboarding>** to be **visible**
09:59:30         cy:command ✔  new url	http://127.0.0.1:9413/index.php?title=Eldfjall&getasktype=revise-tone&gesuggestededit=1&genewcomertasktoken=jmnp0gblgrghe2vhni2hb2ehn20upf2p&mpo=growthexperiments-revise-tone%3Atreatment&veaction=edit&section=all
09:59:30         cy:command ✔  new url	http://127.0.0.1:9413/index.php?title=Eldfjall&gesuggestededit=1&genewcomertasktoken=jmnp0gblgrghe2vhni2hb2ehn20upf2p&mpo=growthexperiments-revise-tone%3Atreatment&veaction=edit&section=all
09:59:30         cy:command ✔  new url	http://127.0.0.1:9413/index.php?title=Eldfjall&gesuggestededit=1&mpo=growthexperiments-revise-tone%3Atreatment&veaction=edit&section=all
09:59:30             cy:xhr ➟  POST http://127.0.0.1:9413/api.php
09:59:30                       Status: 200
09:59:30          cons:info ✱  You are running a development build of Vue.
09:59:30                       Make sure to use the production build (*.prod.js) when deploying for production.
09:59:30         cy:command ✔  new url	http://127.0.0.1:9413/index.php?title=Eldfjall&gesuggestededit=1&mpo=growthexperiments-revise-tone%3Atreatment
09:59:30         cy:command ✔  new url	http://127.0.0.1:9413/index.php?title=Eldfjall&gesuggestededit=1&mpo=growthexperiments-revise-tone%3Atreatment#/editor/all
09:59:30          cons:warn ❖  Failed to log experiment interaction because mw.testKitchen is not defined
09:59:30          cons:warn ❖  This page is using the deprecated ResourceLoader module "moment".
09:59:30                       [1.44] Use mediawiki.DateFormatter or native Intl function instead. See https://phabricator.wikimedia.org/T146798
09:59:30             cy:xhr ➟  GET http://127.0.0.1:9413/api.php?action=visualeditor&format=json&paction=parse&page=Eldfjall&uselang=en&editintro=&preload=&preloadparams=&formatversion=2
09:59:30                       Status: 200
09:59:30         cy:command ✔  get	.close-all-button button
09:59:30         cy:command ✔  assert	expected **<button.cdx-button.cdx-button--action-default.cdx-button--weight-quiet.cdx-button--size-medium.ext-growthExperiments-OnboardingDialog__header__top__button>** to be **visible**
09:59:30         cy:command ✔  click	
09:59:30             cy:xhr ➟  POST http://127.0.0.1:9413/api.php
09:59:30                       Status: 200
09:59:30         cy:command ✔  get	.ve-ui-editCheckActionWidget
09:59:30         cy:command ✔  assert	expected **<div.oo-ui-widget.oo-ui-labelElement.oo-ui-flaggedElement-warning.oo-ui-iconElement.oo-ui-messageWidget-block.oo-ui-messageWidget.ve-ui-editCheckActionWidget>** to be **visible**
09:59:30          cons:warn ❖  Failed to log experiment interaction because mw.testKitchen is not defined
09:59:30             cy:xhr ➟  POST http://127.0.0.1:9413/api.php
09:59:30                       Status: 200
09:59:30         cy:command ✔  wait	1000
09:59:30         cy:command ✔  get	.ve-ui-editCheckActionWidget
09:59:30         cy:command ✔  assert	expected **<div.oo-ui-widget.oo-ui-labelElement.oo-ui-flaggedElement-warning.oo-ui-iconElement.oo-ui-messageWidget-block.oo-ui-messageWidget.ve-ui-editCheckActionWidget>** to be **visible**
09:59:30         cy:command ✔  get	.ve-ui-editCheckActionWidget
09:59:30         cy:command ✔  assert	expected **<div.oo-ui-widget.oo-ui-labelElement.oo-ui-flaggedElement-warning.oo-ui-iconElement.oo-ui-messageWidget-block.oo-ui-messageWidget.ve-ui-editCheckActionWidget>** to have a length of **1**
09:59:30                       Actual: 	1
09:59:30                       Expected: 	1
09:59:30         cy:command ✔  get	.ve-ui-editCheck-gutter-action-warning .oo-ui-image-warning
09:59:30         cy:command ✘  assert	expected **<span.oo-ui-widget.oo-ui-widget-enabled.oo-ui-iconElement-icon.oo-ui-labelElement-invisible.oo-ui-iconWidget.oo-ui-iconElement.oo-ui-icon-alert.oo-ui-flaggedElement-warning.oo-ui-image-warning>** to be **visible**
09:59:30 
09:59:30 
09:59:30       - Closes the Editor when declining Edits and suggests a new task
09:59:30       - Shows the Revise Tone Edit Check and tags edits
09:59:30 
09:59:30 
09:59:30   1 passing (39s)
09:59:30   4 pending
09:59:30   1 failing
09:59:30 
09:59:30   1) Revise Tone
09:59:30        On mobile
09:59:30          Shows the Revise Tone Edit Check:
09:59:30      AssertionError: Timed out retrying after 20000ms: expected '<span.oo-ui-widget.oo-ui-widget-enabled.oo-ui-iconElement-icon.oo-ui-labelElement-invisible.oo-ui-iconWidget.oo-ui-iconElement.oo-ui-icon-alert.oo-ui-flaggedElement-warning.oo-ui-image-warning>' to be 'visible'
09:59:30 
09:59:30 This element `<span.oo-ui-widget.oo-ui-widget-enabled.oo-ui-iconElement-icon.oo-ui-labelElement-invisible.oo-ui-iconWidget.oo-ui-iconElement.oo-ui-icon-alert.oo-ui-flaggedElement-warning.oo-ui-image-warning>` is not visible because its parent `<div.oo-ui-window-content.oo-ui-dialog-content.ve-ui-sidebarDialog-content.oo-ui-window-content-setup.oo-ui-window-content-ready>` has CSS property: `overflow: hidden` and an effective width and height of: `44 x 0` pixels.
09:59:30       at Context.eval (webpack://GrowthExperiments/./cypress/e2e/ReviseTone.cy.ts:126:75)

Video: https://integration.wikimedia.org/ci/job/quibble-with-gated-extensions-selenium-php83/24532/artifact/log/GrowthExperiments/ReviseTone.cy.ts.mp4

  • The relevant part starts at 0:18
  • The check is visible - why does it not find it? Or is this about the ⚠️-icon in the gutter being partially obscured by the help-panel button?

Acceptance criteria

  • The test no longer flakily fails on this check

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript
Dreamy_Jazz renamed this task from ReviseTone.cy.ts fails to find ve-ui-editCheck-gutter-action-warning to ReviseTone.cy.ts flakily fails to find ve-ui-editCheck-gutter-action-warning.Apr 7 2026, 9:18 AM
Reedy triaged this task as High priority.Apr 8 2026, 1:24 PM

This keeps failing a lot. Still no idea why. Let's skip it for now.

Change #1269335 had a related patch set uploaded (by Michael Große; author: Michael Große):

[mediawiki/extensions/GrowthExperiments@master] test(ReviseTone): skip newly flaky mobile Cypress test

https://gerrit.wikimedia.org/r/1269335

Change #1269335 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] test(ReviseTone): skip newly flaky mobile Cypress test

https://gerrit.wikimedia.org/r/1269335