Page MenuHomePhabricator

LanguageScreenshotBot trying to edit a non-existent page without signing in
Closed, ResolvedPublic1 Estimated Story Points

Description

@Juetho has asked to rerun LanguageScreenshotBot, but the job fails:

...
00:03:50.779 + node_modules/.bin/grunt screenshots-all
00:03:52.239 Running "mochaTest:screenshots-all" (mochaTest) task
00:03:52.845 
00:03:52.848 
00:03:52.850   Screenshots: ar
00:07:14.967 
    1) "before each" hook: ret for "Toolbar & action tools"
00:07:55.006 
    2) "after each" hook: ret for "Toolbar & action tools"
00:07:55.007 
00:07:55.010 
00:07:55.010   0 passing (4m)
00:07:55.010   2 failing
00:07:55.011 
00:07:55.012   1)  "before each" hook: ret for "Toolbar & action tools":
00:07:55.012      Error: timeout of 40000ms exceeded. Ensure the done() callback is being called in this test.
00:07:55.013   
00:07:55.013 
00:07:55.013   2)  "after each" hook: ret for "Toolbar & action tools":
00:07:55.013      Error: timeout of 40000ms exceeded. Ensure the done() callback is being called in this test.
...

@Esanders: could you please take a look at the screenshot code?

Event Timeline

Looks like VE isn't loading on non-existant pages any more (https://en.wikipedia.org/wiki/PageDoesNotExist?veaction=edit) on en.wiki, which I think is correct (IPs can't create pages on en.wiki).

zeljkofilipin triaged this task as Low priority.
zeljkofilipin added a subscriber: Esanders.

Thanks @Esanders, after changing the script to use an existing article, it works fine.

Change 347595 had a related patch set uploaded (by Zfilipin):
[mediawiki/extensions/VisualEditor@master] Fix LanguageScreenshotBot by using an existing article

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

Hmm, does anybody remember why did it try to open a page that doesn't exist? Could it be intentional?

I don't think it was relevant. Screenshots look fine now.

Hmm, does anybody remember why did it try to open a page that doesn't exist? Could it be intentional?

Yes. It was exceedingly intentional. You just copyvio'ed that article across hundreds of images. :-( This is what https://www.mediawiki.org/wiki/Help:Sample_page is for – it's a PD-content article so can be used for screenshots without violating copyright.

Oops, sorry about that.

Looks like the only image that has more than just a few pixels of the article visible is this one:

https://commons.wikimedia.org/wiki/File:VisualEditor_More_Settings-en.png

Should I request that the image is deleted? Or should I just upload a new version?

The rest of the images should be fine:

https://commons.wikimedia.org/wiki/Special:ListFiles?limit=50&user=LanguageScreenshotBot&ilshowall=1

Only 21 images were uploaded today, timestamps 14:17-14:20, 11 April 2017.

I have tried running the script targeting https://www.mediawiki.org/wiki/Help:Sample_page but it fails:

~/Documents/gerrit/mediawiki/vagrant/mediawiki/extensions/VisualEditor$ ./node_modules/.bin/grunt screenshots
Running "mochaTest:screenshots-en" (mochaTest) task


(node:4760) DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
  Screenshots: en
    1) Toolbar & action tools
    2) Citoid inspector
    βœ“ Tool groups (headings/text style/indentation/insert/page settings) (9771ms)
    βœ“ Save dialog (1359ms)
    βœ“ Special character inserter (2485ms)
    βœ“ Math dialog (3528ms)
    3) "before each" hook: ret for "Reference list dialog"


  4 passing (2m)
  3 failing

  1) Screenshots: en Toolbar & action tools:
     JavascriptError: javascript error: Cannot read property 'getBoundingClientRect' of undefined
JavaScript stack:
TypeError: Cannot read property 'getBoundingClientRect' of undefined
    at Object.getBoundingRect (eval at executeAsyncScript (:439:5), <anonymous>:10:30)
    at eval (eval at executeAsyncScript (:439:5), <anonymous>:5:22)
    at eval (eval at executeAsyncScript (:439:5), <anonymous>:10:9)
    at eval (eval at executeAsyncScript (:439:5), <anonymous>:10:35)
    at executeAsyncScript (<anonymous>:439:26)
    at <anonymous>:455:29
    at callFunction (<anonymous>:347:33)
    at <anonymous>:357:23
    at <anonymous>:358:3
  (Session info: chrome=57.0.2987.133)
  (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.12.4 x86_64)
    at Object.checkLegacyResponse (node_modules/selenium-webdriver/lib/error.js:639:15)
    at parseHttpResponse (node_modules/selenium-webdriver/http/index.js:538:13)
    at client_.send.then.response (node_modules/selenium-webdriver/http/index.js:472:11)
    at ManagedPromise.invokeCallback_ (node_modules/selenium-webdriver/lib/promise.js:1379:14)
    at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
    at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
    at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25)
    at node_modules/selenium-webdriver/lib/promise.js:639:7
    at process._tickDomainCallback (internal/process/next_tick.js:135:7)
  
  From: Task: WebDriver.executeScript()
    at Driver.schedule (node_modules/selenium-webdriver/lib/webdriver.js:377:17)
    at Driver.executeAsyncScript (node_modules/selenium-webdriver/lib/webdriver.js:614:17)
    at runScreenshotTest (build/screenshots.js:168:12)
    at Context.<anonymous> (build/screenshots.userGuide.js:14:5)
    at node_modules/selenium-webdriver/testing/index.js:144:19
    at new ManagedPromise (node_modules/selenium-webdriver/lib/promise.js:1082:7)
    at controlFlowExecute (node_modules/selenium-webdriver/testing/index.js:129:14)
    at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
    at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
    at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25)
    at node_modules/selenium-webdriver/lib/promise.js:639:7
  
  From: Task: Screenshots: en Toolbar & action tools
    at Context.ret (node_modules/selenium-webdriver/testing/index.js:128:10)
  

  2) Screenshots: en Citoid inspector:
     JavascriptError: javascript error: Cannot read property 'onSelect' of undefined
JavaScript stack:
TypeError: Cannot read property 'onSelect' of undefined
    at eval (eval at executeAsyncScript (:439:5), <anonymous>:5:46)
    at eval (eval at executeAsyncScript (:439:5), <anonymous>:14:9)
    at eval (eval at executeAsyncScript (:439:5), <anonymous>:14:35)
    at executeAsyncScript (<anonymous>:439:26)
    at <anonymous>:455:29
    at callFunction (<anonymous>:347:33)
    at <anonymous>:357:23
    at <anonymous>:358:3
  (Session info: chrome=57.0.2987.133)
  (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.12.4 x86_64)
    at Object.checkLegacyResponse (node_modules/selenium-webdriver/lib/error.js:639:15)
    at parseHttpResponse (node_modules/selenium-webdriver/http/index.js:538:13)
    at client_.send.then.response (node_modules/selenium-webdriver/http/index.js:472:11)
    at ManagedPromise.invokeCallback_ (node_modules/selenium-webdriver/lib/promise.js:1379:14)
    at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
    at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
    at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25)
    at node_modules/selenium-webdriver/lib/promise.js:639:7
    at process._tickDomainCallback (internal/process/next_tick.js:135:7)
  
  From: Task: WebDriver.executeScript()
    at Driver.schedule (node_modules/selenium-webdriver/lib/webdriver.js:377:17)
    at Driver.executeAsyncScript (node_modules/selenium-webdriver/lib/webdriver.js:614:17)
    at runScreenshotTest (build/screenshots.js:168:12)
    at Context.<anonymous> (build/screenshots.userGuide.js:41:5)
    at node_modules/selenium-webdriver/testing/index.js:144:19
    at new ManagedPromise (node_modules/selenium-webdriver/lib/promise.js:1082:7)
    at controlFlowExecute (node_modules/selenium-webdriver/testing/index.js:129:14)
    at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
    at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
    at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25)
    at node_modules/selenium-webdriver/lib/promise.js:639:7
  
  From: Task: Screenshots: en Citoid inspector
    at Context.ret (node_modules/selenium-webdriver/testing/index.js:128:10)
  

  3)  "before each" hook: ret for "Reference list dialog":
     Error: timeout of 40000ms exceeded. Ensure the done() callback is being called in this test.

Warning: Task "mochaTest:screenshots-en" failed. Use --force to continue.

Aborted due to warnings.

I am not sure how to continue:

Is there a page at en.wikipedia.org that we can target?

Maybe copy that page to a user sub page on en.wiki?

Created https://en.wikipedia.org/wiki/Help:Sample_page with a small amount of PD content and a warning not to add to it.

Thanks @Esanders! The script now runs mostly fine, but one screenshot fails. I have reproduced it both on my machine and Jenkins.

https://integration.wikimedia.org/ci/job/language-screenshots-VisualEditor-347595/BROWSER=chrome,PLATFORM=Windows%2010,label=ci-jessie-wikimedia/2/console

00:07:15.685   1) Screenshots: en Toolbar & action tools:
00:07:15.685      JavascriptError: javascript error: Cannot read property 'getBoundingClientRect' of undefined
00:07:15.685 JavaScript stack:
00:07:15.685 TypeError: Cannot read property 'getBoundingClientRect' of undefined
00:07:15.686     at Object.getBoundingRect (eval at executeAsyncScript (:439:5), <anonymous>:10:30)
00:07:15.686     at eval (eval at executeAsyncScript (:439:5), <anonymous>:5:22)
00:07:15.686     at eval (eval at executeAsyncScript (:439:5), <anonymous>:10:9)
00:07:15.686     at eval (eval at executeAsyncScript (:439:5), <anonymous>:10:35)
00:07:15.687     at executeAsyncScript (<anonymous>:439:26)
00:07:15.687     at <anonymous>:455:29
00:07:15.687     at callFunction (<anonymous>:347:33)
00:07:15.687     at <anonymous>:357:23
00:07:15.687     at <anonymous>:358:3
00:07:15.687   (Session info: chrome=57.0.2987.98)
00:07:15.687   (Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 10.0.10586 x86_64)
00:07:15.688     at WebDriverError (node_modules/selenium-webdriver/lib/error.js:27:5)
00:07:15.688     at JavascriptError (node_modules/selenium-webdriver/lib/error.js:192:5)
00:07:15.688     at Object.checkLegacyResponse (node_modules/selenium-webdriver/lib/error.js:639:15)
00:07:15.688     at parseHttpResponse (node_modules/selenium-webdriver/http/index.js:538:13)
00:07:15.689     at client_.send.then.response (node_modules/selenium-webdriver/http/index.js:472:11)
00:07:15.689     at ManagedPromise.invokeCallback_ (node_modules/selenium-webdriver/lib/promise.js:1379:14)
00:07:15.689     at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
00:07:15.689     at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
00:07:15.690     at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25)
00:07:15.690     at node_modules/selenium-webdriver/lib/promise.js:639:7
00:07:15.690     at process._tickDomainCallback (internal/process/next_tick.js:129:7)
00:07:15.690   
00:07:15.690   From: Task: WebDriver.executeScript()
00:07:15.691     at WebDriver.schedule (node_modules/selenium-webdriver/lib/webdriver.js:377:17)
00:07:15.691     at WebDriver.executeAsyncScript (node_modules/selenium-webdriver/lib/webdriver.js:614:17)
00:07:15.691     at runScreenshotTest (build/screenshots.js:168:12)
00:07:15.691     at Context.<anonymous> (build/screenshots.userGuide.js:14:5)
00:07:15.692     at node_modules/selenium-webdriver/testing/index.js:144:19
00:07:15.692     at new ManagedPromise (node_modules/selenium-webdriver/lib/promise.js:1082:7)
00:07:15.692     at controlFlowExecute (node_modules/selenium-webdriver/testing/index.js:129:14)
00:07:15.692     at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
00:07:15.693     at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
00:07:15.693     at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25)
00:07:15.693     at node_modules/selenium-webdriver/lib/promise.js:639:7
00:07:15.693   
00:07:15.693   From: Task: Screenshots: en Toolbar & action tools
00:07:15.693     at Context.ret (node_modules/selenium-webdriver/testing/index.js:128:10)

Yeah it's looking for nstab-main, but we're now in the "help" namespaces. This means the read tab in that screenshot will be "Help page" instead of "Article" as well.

Change 347595 merged by jenkins-bot:
[mediawiki/extensions/VisualEditor@master] Fix LanguageScreenshotBot by using an existing article

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

WFM locally so I'd say resolved unless we hear otherwise.

Esanders renamed this task from LanguageScreenshotBot fails with `Error: timeout of 40000ms exceeded. Ensure the done() callback is being called in this test.` to LanguageScreenshotBot trying to edit a non-existent page without signing in.Apr 25 2017, 12:00 PM
Jdforrester-WMF set the point value for this task to 1.

The job still fails:

https://integration.wikimedia.org/ci/job/language-screenshots-VisualEditor/BROWSER=chrome,PLATFORM=Windows%2010,label=ci-jessie-wikimedia/56/console

...
00:03:31.589 + node_modules/.bin/grunt screenshots-all
00:03:33.142 Running "mochaTest:screenshots-all" (mochaTest) task
00:03:33.663 
00:03:33.665 
00:03:33.667   Screenshots: ar
00:18:53.927 
    1) Toolbar & action tools
00:18:54.113 
    2) "after each" hook: ret for "Toolbar & action tools"
00:18:54.115 
00:18:54.116 
00:18:54.117   0 passing (15m)
00:18:54.117   2 failing
00:18:54.118 
00:18:54.119   1) Screenshots: ar Toolbar & action tools:
00:18:54.119      UnsupportedOperationError: ERROR The test with session id 3682a09bc31c4e62969ad066fcaa786b has already finished, and can't receive further commands.
00:18:54.120 You can learn more at https://saucelabs.com/jobs/3682a09bc31c4e62969ad066fcaa786b
00:18:54.120 For help, please check https://wiki.saucelabs.com/display/DOCS/Common+Error+Messages
00:18:54.120     at WebDriverError (node_modules/selenium-webdriver/lib/error.js:27:5)
00:18:54.120     at UnsupportedOperationError (node_modules/selenium-webdriver/lib/error.js:448:5)
00:18:54.120     at parseHttpResponse (node_modules/selenium-webdriver/http/index.js:552:11)
00:18:54.121     at client_.send.then.response (node_modules/selenium-webdriver/http/index.js:472:11)
00:18:54.121     at ManagedPromise.invokeCallback_ (node_modules/selenium-webdriver/lib/promise.js:1379:14)
00:18:54.121     at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
00:18:54.121     at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
00:18:54.122     at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25)
00:18:54.122     at node_modules/selenium-webdriver/lib/promise.js:639:7
00:18:54.122     at process._tickDomainCallback (internal/process/next_tick.js:129:7)
00:18:54.122   
00:18:54.122   From: Task: WebDriver.executeScript()
00:18:54.122     at WebDriver.schedule (node_modules/selenium-webdriver/lib/webdriver.js:377:17)
00:18:54.123     at WebDriver.executeAsyncScript (node_modules/selenium-webdriver/lib/webdriver.js:614:17)
00:18:54.123     at runScreenshotTest (build/screenshots.js:168:12)
00:18:54.123     at Context.<anonymous> (build/screenshots.userGuide.js:14:5)
00:18:54.123     at node_modules/selenium-webdriver/testing/index.js:144:19
00:18:54.123     at new ManagedPromise (node_modules/selenium-webdriver/lib/promise.js:1082:7)
00:18:54.124     at controlFlowExecute (node_modules/selenium-webdriver/testing/index.js:129:14)
00:18:54.124     at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
00:18:54.124     at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
00:18:54.124     at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25)
00:18:54.125     at node_modules/selenium-webdriver/lib/promise.js:639:7
00:18:54.125   
00:18:54.125   From: Task: Screenshots: ar Toolbar & action tools
00:18:54.125     at Context.ret (node_modules/selenium-webdriver/testing/index.js:128:10)
00:18:54.125   
00:18:54.125 
00:18:54.126   2)  "after each" hook: ret for "Toolbar & action tools":
00:18:54.126      UnsupportedOperationError: ERROR The test with session id 3682a09bc31c4e62969ad066fcaa786b has already finished, and can't receive further commands.
00:18:54.126 You can learn more at https://saucelabs.com/jobs/3682a09bc31c4e62969ad066fcaa786b
00:18:54.126 For help, please check https://wiki.saucelabs.com/display/DOCS/Common+Error+Messages
00:18:54.127     at WebDriverError (node_modules/selenium-webdriver/lib/error.js:27:5)
00:18:54.127     at UnsupportedOperationError (node_modules/selenium-webdriver/lib/error.js:448:5)
00:18:54.127     at parseHttpResponse (node_modules/selenium-webdriver/http/index.js:552:11)
00:18:54.128     at client_.send.then.response (node_modules/selenium-webdriver/http/index.js:472:11)
00:18:54.128     at ManagedPromise.invokeCallback_ (node_modules/selenium-webdriver/lib/promise.js:1379:14)
00:18:54.128     at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
00:18:54.128     at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
00:18:54.129     at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25)
00:18:54.129     at node_modules/selenium-webdriver/lib/promise.js:639:7
00:18:54.129     at process._tickDomainCallback (internal/process/next_tick.js:129:7)
00:18:54.129   
00:18:54.129   From: Task: WebDriver.quit()
00:18:54.129     at WebDriver.schedule (node_modules/selenium-webdriver/lib/webdriver.js:377:17)
00:18:54.129     at WebDriver.quit (node_modules/selenium-webdriver/lib/webdriver.js:443:23)
00:18:54.130     at Context.<anonymous> (build/screenshots.js:142:11)
00:18:54.130     at node_modules/selenium-webdriver/testing/index.js:144:19
00:18:54.130     at new ManagedPromise (node_modules/selenium-webdriver/lib/promise.js:1082:7)
00:18:54.130     at controlFlowExecute (node_modules/selenium-webdriver/testing/index.js:129:14)
00:18:54.130     at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
00:18:54.131     at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
00:18:54.131     at asyncRun (node_modules/selenium-webdriver/lib/promise.js:2820:25)
00:18:54.131     at node_modules/selenium-webdriver/lib/promise.js:639:7
00:18:54.131   
00:18:54.131   From: Task:  "after each" hook: ret
00:18:54.131     at Context.ret (node_modules/selenium-webdriver/testing/index.js:128:10)
00:18:54.131   
00:18:54.131 
00:18:54.132 
00:18:54.132 
00:18:54.132 Warning: Task "mochaTest:screenshots-all" failed. Use --force to continue.
00:18:54.132 
00:18:54.132 Aborted due to warnings.
...

I think the way I rewrote the tests it runs the languages in parallel. This commit should fix that: https://gerrit.wikimedia.org/r/#/c/350857/

Please note that it has created some duplicates; for instance the current version of the file in https://commons.wikimedia.org/wiki/File:ContentTranslation_Contributions_popover-en.png is not in English.

I am not sure how to continue:

Is there a page at en.wikipedia.org that we can target?

How about https://en.wikipedia.org/wiki/Screenshot/fodder ?

Please note that it has created some duplicates; for instance the current version of the file in https://commons.wikimedia.org/wiki/File:ContentTranslation_Contributions_popover-en.png is not in English.

Strange, that should not happen. I will investigate. Thanks for letting me know, I did not notice it.

Please note that it has created some duplicates; for instance the current version of the file in https://commons.wikimedia.org/wiki/File:ContentTranslation_Contributions_popover-en.png is not in English.

The file and it's duplicates have been created in 2015. It (and it's duplicates) should probably be deleted. The software has since been completely rewritten (in another language).

As far as I can see, recent contributions are all fine:

https://commons.wikimedia.org/wiki/Special:ListFiles?limit=20&user=LanguageScreenshotBot&ilshowall=1

Taking screenshots works fine.

...
00:07:25.501 + node_modules/.bin/grunt screenshots-all
00:07:28.190 Running "mochaTest:screenshots-all" (mochaTest) task
...
02:59:35.166   755 passing (3h)
02:59:35.166   1 failing
02:59:35.169 
02:59:35.170   1)  "before each" hook: ret for "Link inspector":
02:59:35.170      Error: timeout of 40000ms exceeded. Ensure the done() callback is being called in this test.
...

There is one failure, but that is to be expected from such a long job.

Uploading fails:

...
03:00:57.291 + bundle exec upload
03:23:20.896 /home/jenkins/workspace/vendor/bundle/gems/mediawiki_api-0.7.0/lib/mediawiki_api/client.rb:211:in `send_request': A file with this name exists already in the shared file repository. (MediawikiApi::ApiError)
03:23:20.897 If you still want to upload your file, please go back and use a new name.
03:23:20.898 [[File:VisualEditor_citoid_Cite_button-pcd.png|thumb|center|VisualEditor_citoid_Cite_button-pcd.png]] (fileexists-shared-forbidden)
...

Only 121 files are uploaded, but more than 1000 are created:

https://integration.wikimedia.org/ci/job/language-screenshots-VisualEditor/BROWSER=chrome,PLATFORM=Windows%2010,label=ci-jessie-wikimedia/60/artifact/screenshots/

https://commons.wikimedia.org/wiki/Special:ListFiles?limit=250&user=LanguageScreenshotBot&ilshowall=1

Please note that it has created some duplicates; for instance the current version of the file in https://commons.wikimedia.org/wiki/File:ContentTranslation_Contributions_popover-en.png is not in English.

The file and it's duplicates have been created in 2015. It (and it's duplicates) should probably be deleted. The software has since been completely rewritten (in another language).

As far as I can see, recent contributions are all fine:

https://commons.wikimedia.org/wiki/Special:ListFiles?limit=20&user=LanguageScreenshotBot&ilshowall=1

@Jeff_G I discussed that with Amir (CX team) who confirmed the file isn't needed anywhere. I am deleting that file and its duplicates. If you find other unused ones that are clearly wrong please feel free to let me know any time. TY.

Yes, it's in mainspace, so the read tab says "article". Here's why:

Yeah it's looking for nstab-main, but we're now in the "help" namespaces. This means the read tab in that screenshot will be "Help page" instead of "Article" as well.

A discussion is taking place as to whether the article "Screenshot/fodder" at https://en.wikipedia.org/wiki/Screenshot/fodder is suitable for inclusion in Wikipedia according to Wikipedia's policies and guidelines or whether it should be deleted.
The article will be discussed at "Wikipedia:Articles for deletion/Screenshot/fodder" at https://en.wikipedia.org/wiki/Wikipedia:Articles_for_deletion/Screenshot/fodder until a consensus is reached, and anyone is welcome to contribute to the discussion. The nomination will explain the policies and guidelines which are of concern. The discussion focuses on high-quality evidence and our policies and guidelines.
Users may edit the article during the discussion, including to improve the article to address concerns raised in the discussion. However, do not remove the article-for-deletion notice from the top of the article.

I am not sure that the articles are needed. Currently the script works just fine targeting https://en.wikipedia.org/wiki/Help:Sample_page.

A better idea would be to find a solution that doesn't require dumping garbage into enwiki's article namespace. For example, can you change your test to look for nstab-help instead of nstab-main (so you can use https://en.wikipedia.org/wiki/Help:Sample_page), or can you use a page on testwiki instead?

As I said in the previous comment, the script works just fine targeting https://en.wikipedia.org/wiki/Help:Sample_page. I am not sure why the pages in article namespace are needed @Jeff_G?

As I said in the previous comment, the script works just fine targeting https://en.wikipedia.org/wiki/Help:Sample_page. I am not sure why the pages in article namespace are needed @Jeff_G?

For looks. Ask @Esanders for details.

Why can't the bot target a different page which is known to exist for each wiki, instead of targeting fake articles?

Use testwiki or the beta cluster. Pages should not be created on production wikis, especially in content namespaces, for this.

After further discussion at the AfD on enwiki, it turns out that the page in question is not currently being used and was never actually needed, as the comment here being used to support the need for it was already fixed in the code in Gerrit change 347595 PS5 a almost month earlier.

The user who created it merely wants it to be used because he believes that using anything other than an enwiki mainspace page would be wrong as it might not exactly match what's on enwiki. Never mind that, as far as I can tell, the bot currently also generates images for other languages and other English-language projects based on the same enwiki page at Help:Sample page rather than using a page from each project.

Use testwiki or the beta cluster. Pages should not be created on production wikis, especially in content namespaces, for this.

This doesn't work very well for screenshots of the link inspector's autocomplete feature.

The screenshots taking part works fine now. I will work on the uploading images to commons after I resolve some urgent tasks.

Please note, as decided in Wikipedia:Articles for deletion/Screenshot/fodder the English Wikipedia community rejects having such test pages hosted in mainspace. Possible alternatives would be loading the text to a specific version, or using a different namespace.

Possible alternatives would be loading the text to a specific version, or using a different namespace.

As noted before, "using a different namespace" means "producing some incorrect screenshots". The UI does not look quite the same in every namespace, and the goal is to get screenshots that look exactly like what the English Wikipedia editor sees in the mainspace.

That said, I wonder whether we could do at least some of this at a different wiki that does allow non-confirmed accounts to create articles, with &uselang=en set? We'd have to check for a few details, such as making sure that the citoid service was installed.

Because the button label changed from "Save page" to "Publish page" at the English Wikipedia last week, many of these screenshots are out of date again. If anyone knows how to fix the bot, even for a partial run, that would be helpful.

As noted before, "using a different namespace" means "producing some incorrect screenshots".

As noted where, exactly? I see one person (Jeff_G) asserting that it makes a difference. The only difference identified is that the article tab says "Help page" instead of article. No one else, until you just now, has supported that assertion or provided examples of any other differences.

the goal is to get screenshots that look exactly like what the English Wikipedia editor sees in the mainspace.

That seems like an odd goal when the screenshots for every other language show what the user would see on the English Wikipedia with an appropriate UI language selected, rather than what an editor on the appropriate-language Wikipedia would see.

It seems to me that this bug was correctly marked as resolved in T162454#3210031 and incorrectly reopened due to an unrelated failure in the same script.

@Anomie The task should be been resolved, but a bit later, in T162454#3341402. I'll check if the screenshot part works. If it works, I will resolve the task and create a new one to fix uploading, since this one is about taking screenshots.

I note this task isn't about every failure in taking screenshots, just the failures that were due to it trying to edit a non-existent page without signing in. The errors in T162454#3220913 seem to have been failing for a different reason, and if screenshotting isn't working now it's probably worthy of a separate bug for the new cause rather than continuing to leave this confusing task open.

As noted where, exactly? I see one person (Jeff_G) asserting that it makes a difference. The only difference identified is that the article tab says "Help page" instead of article. No one else, until you just now, has supported that assertion or provided examples of any other differences.

The Insert menu is configured differently in different wikis and different namespaces. For example, at the English Wikipedia, the Help: namespace has the signature item working, and in the mainspace it's disabled (so grayed out). At Meta, the signature item is live in both namespaces. You can compare these easily:

There are three different configurations for citations in use at different Wikipedias (with citoid; without citoid but with pre-configured templates; without citation templates), and a fourth in use at non-Wikipedias, which is why more than the user interface langauge would ideally be changed for some screenshots. You can see this difference by clicking the Cite button at these three larger Wikipedias:

Just switching between Wikipedias doesn't cover everything. For example, Kartographer is enabled at enwikivoyage but not enwiki, so those two English-language wikis have different Insert menus. That means that no matter what we choose, it's not going to be perfect for every user everywhere. However, it's enough for the main purpose, which is providing screenshots for https://www.mediawiki.org/wiki/Help:VisualEditor/User_guide – which we base primarily, but not exclusively, on the Wikipedias, on the grounds that there are more new editors at the Wikipedias than at the sister projects, and new editors are the main audience for the doc. Having the bot create screenshots reduces the amount of time translators have to spend manually creating screenshots.

And, specifically in terms of this bug, please note that merely logging into the English Wikipedia is insufficient to open a non-existent page right now, due to the restrictions imposed for ACTRIAL. LanguageScreenshotBot would need to make ten local edits or be marked "confirmed", to be able to open a non-existent mainspace page there. ACTRIAL is supposed to end in a fewΒ more months.
.

Anomie, it's (of course) not your fault that you don't happen to know as much VisualEditor's user guide as I do, or about the specific uses of and therefore the needs for these screenshots. I would actually be sorry if you did. However, I would appreciate it if you addressed me in the future with an assumption that I probably knew what I was talking about, at least in this area. Like everyone, I am occasionally wrong, but I would like to believe that it's occasional, and that neither I nor the volunteer who first mentioned this difference deserved this kind of I'll-believe-it-when-I-see-the-proof response.

There are three different configurations for citations in use at different Wikipedias (with citoid; without citoid but with pre-configured templates; without citation templates), and a fourth in use at non-Wikipedias, which is why more than the user interface langauge would ideally be changed for some screenshots. You can see this difference by clicking the Cite button at these three larger Wikipedias:

That was one of the points I was trying to make: as the bot currently functions, you won't see the equivalent of https://vi.wikipedia.org/wiki/San_Francisco?veaction=edit or https://ja.wikipedia.org/wiki/ァンフランシスコ?veaction=edit in screenshots for Vietnamese or Japanese. You'll see the equivalent of https://en.wikipedia.org/wiki/San_Francisco?veaction=edit&uselang=vi and https://en.wikipedia.org/wiki/San_Francisco?veaction=edit&uselang=ja, i.e. with citoid even though it's not enabled on viwiki or jawiki.

And, specifically in terms of this bug, please note that merely logging into the English Wikipedia is insufficient to open a non-existent page right now, due to the restrictions imposed for ACTRIAL. LanguageScreenshotBot would need to make ten local edits or be marked "confirmed", to be able to open a non-existent mainspace page there. ACTRIAL is supposed to end in a fewΒ more months.

Which is irrelevant, since the bot has been using an existing page, and has been since rEVEDca46a67843a7: Fix LanguageScreenshotBot by using an existing article was merged on April 19, 2017.

However, I would appreciate it if you addressed me in the future with an assumption that I probably knew what I was talking about, at least in this area. Like everyone, I am occasionally wrong, but I would like to believe that it's occasional, and that neither I nor the volunteer who first mentioned this difference deserved this kind of I'll-believe-it-when-I-see-the-proof response.

You made certain statements, and I replied to those statements. It seems to me that you are the one who is making unwarranted assumptions, largely about assumptions you think that I made. http://www.mit.edu/~jcb/tact.html may be relevant here.

I'll admit I did make one assumption in my reply, but I think your subsequent comment has borne it out. I assumed that you were unaware of the fact that the inability to generate screenshots due to attempting to edit a non-existent page was fixed on April 19 by using an existing page instead, since the bug was erroneously reopened on April 28 when screenshotting failed due to an issue that seems to have been unrelated to the page being targeted. It's not clear that the current lack of updated screenshots is due to a failure in the screenshotting at all, rather than a failure in the uploading of the screenshots.

Thank you for providing examples of differences that are more significant than the text in one peripheral UI tab. Although personally I don't see that one button not being greyed out as a major issue when the text on the help page you linked specifically addresses the fact that the button may or may not be greyed out. And I note that the other differences you described are not going to be fixed by simply changing the namespace of the page used for the screenshot.

I still don't understand the focus on (two, now) extremely minor differences between enwiki mainspace and enwiki helpspace, particularly when you went on to suggest using a different wiki entirely which may have different local i18n message and CSS customizations and different search results in addition to different configuration compared to enwiki.

This has been resolved a long time ago.