Account created on 13 July 2006, almost 19 years ago
#

Merge Requests

More

Recent comments

πŸ‡ΊπŸ‡ΈUnited States aangel
πŸ‡ΊπŸ‡ΈUnited States aangel
πŸ‡ΊπŸ‡ΈUnited States aangel
πŸ‡ΊπŸ‡ΈUnited States aangel
πŸ‡ΊπŸ‡ΈUnited States aangel
πŸ‡ΊπŸ‡ΈUnited States aangel
πŸ‡ΊπŸ‡ΈUnited States aangel
πŸ‡ΊπŸ‡ΈUnited States aangel

2.0 has been released.

πŸ‡ΊπŸ‡ΈUnited States aangel

Thanks for the report. I made the change and merged it.

πŸ‡ΊπŸ‡ΈUnited States aangel

aangel β†’ made their first commit to this issue’s fork.

πŸ‡ΊπŸ‡ΈUnited States aangel

β€’ simpletest is everywhere, reverting change.

πŸ‡ΊπŸ‡ΈUnited States aangel
  • Actions was deprecated then removed in D11; use announcements_feed module as example instead.
  • simpletest has been replaced by phpunit; change name of folder to reflect that.
πŸ‡ΊπŸ‡ΈUnited States aangel

Targeting 1.4.

πŸ‡ΊπŸ‡ΈUnited States aangel

This was released last year. Closing.

πŸ‡ΊπŸ‡ΈUnited States aangel

These tests are in 1.3. Closing.

πŸ‡ΊπŸ‡ΈUnited States aangel

For my composer-based install, I think in my situation there was something lingering (a block from admin_toolbar_tools? see the backtrace below) that referenced the update.links.action.yml file because I did everything I could think of before the final step below. (I had restored the Upgrade Manager module thinking that would help but it turned out to make things worse.)

In any case, I:

  • removed the update module entry by editing the config table
  • cleared every cache I could think of
  • reviewed the menu_tree table
  • reviewed router table
  • reviewed the plugin definitions
  • applied both patch #4 and #6 from Compatibility issue: Route update.theme_install does not exist in Drupal 11.0.x & 10.4.x
  • and likely other things I'm not remembering.

It wasn't until I completely erased the contents of update.links.action.yml that that I could pull up /admin/modulesβ€”even though the module was uninstalled (but present on the filesystem).

Perhaps this will help someone who painted themselves into the same corner I did.

Below is the backtrace from the failure in RouteProvider.php ("Route "update.module_install" does not exist."):

#0 /code/web/core/lib/Drupal/Core/Menu/LocalActionDefault.php(87): Drupal\Core\Routing\RouteProvider->getRouteByName('update.module_i...')
#1 /code/web/core/lib/Drupal/Core/Menu/LocalActionManager.php(192): Drupal\Core\Menu\LocalActionDefault->getRouteParameters(Object(Drupal\Core\Routing\CurrentRouteMatch))
#2 /code/web/core/lib/Drupal/Core/Menu/Plugin/Block/LocalActionsBlock.php(81): Drupal\Core\Menu\LocalActionManager->getActionsForRoute('system.modules_...')
#3 /code/web/core/modules/block/src/BlockViewBuilder.php(171): Drupal\Core\Menu\Plugin\Block\LocalActionsBlock->build()
#4 [internal function]: Drupal\block\BlockViewBuilder::preRender(Array)
#5 /code/web/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php(113): call_user_func_array('Drupal\\block\\Bl...', Array)
#6 /code/web/core/lib/Drupal/Core/Render/Renderer.php(870): Drupal\Core\Render\Renderer->doTrustedCallback('Drupal\\block\\Bl...', Array, 'Render #pre_ren...', 'exception', 'Drupal\\Core\\Ren...')
#7 /code/web/core/lib/Drupal/Core/Render/Renderer.php(432): Drupal\Core\Render\Renderer->doCallback('#pre_render', 'Drupal\\block\\Bl...', Array)
#8 /code/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender(Array)
#9 /code/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender(Array, false)
#10 /code/web/core/lib/Drupal/Core/Template/TwigExtension.php(484): Drupal\Core\Render\Renderer->render(Array)
#11 /files/php/twig/678ecf147c807_page.html.twig_CiIyKlwi1CiiVfhMLJjmz4BX0/98gFkY9cIZo0bQJ1_QGhaX98smPe7gsMtSAC39cdu-Y.php(90): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#12 /code/vendor/twig/twig/src/Template.php(387): __TwigTemplate_0e19dbed70a1ef5fd668bdace6bdbdce->doDisplay(Array, Array)
#13 /code/vendor/twig/twig/src/Template.php(343): Twig\Template->yield(Array, Array)
#14 /code/vendor/twig/twig/src/Template.php(358): Twig\Template->display(Array)
#15 /code/vendor/twig/twig/src/TemplateWrapper.php(35): Twig\Template->render(Array)
#16 /code/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render(Array)
#17 /code/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): twig_render_template('core/themes/cla...', Array)
#18 /code/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render('page', Array)
#19 /code/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender(Array, false)
#20 /code/web/core/lib/Drupal/Core/Template/TwigExtension.php(484): Drupal\Core\Render\Renderer->render(Array)
#21 /files/php/twig/678ecf147c807_html.html.twig_5PuhOBihR5J2SomMX1OHMMKUe/aFbEDfVcpSz7WS-gVUQnxHFhmcE3cKm5zGMfYZWptOI.php(91): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#22 /code/vendor/twig/twig/src/Template.php(387): __TwigTemplate_28dda737252b4ec9e62e7e0f81eef67e->doDisplay(Array, Array)
#23 /code/vendor/twig/twig/src/Template.php(343): Twig\Template->yield(Array, Array)
#24 /code/vendor/twig/twig/src/Template.php(358): Twig\Template->display(Array)
#25 /code/vendor/twig/twig/src/TemplateWrapper.php(35): Twig\Template->render(Array)
#26 /code/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render(Array)
#27 /code/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): twig_render_template('core/themes/cla...', Array)
<snip>
πŸ‡ΊπŸ‡ΈUnited States aangel

For my composer-based install, I think in my situation there was something lingering (a block from admin_toolbar_tools? see the backtrace below) that referenced the update.links.action.yml file because I did everything I could think of before the final step below.

I:

  • removed the update module entry by editing the config table
  • cleared every cache I could think of
  • reviewed the menu_tree table
  • reviewed router table
  • reviewed the plugin definitions
  • applied both patch #4 and #6 from Compatibility issue: Route update.theme_install does not exist in Drupal 11.0.x & 10.4.x πŸ› Individual admin pages no longer accessible after update to 10.4 Active
  • and likely other things I'm not remembering.

It wasn't until I completely erased the contents of update.links.action.yml that that I could pull up /admin/modulesβ€”even though the module was uninstalled.

Below is the backtrace:

#0 /code/web/core/lib/Drupal/Core/Menu/LocalActionDefault.php(87): Drupal\Core\Routing\RouteProvider->getRouteByName('update.module_i...')
#1 /code/web/core/lib/Drupal/Core/Menu/LocalActionManager.php(192): Drupal\Core\Menu\LocalActionDefault->getRouteParameters(Object(Drupal\Core\Routing\CurrentRouteMatch))
#2 /code/web/core/lib/Drupal/Core/Menu/Plugin/Block/LocalActionsBlock.php(81): Drupal\Core\Menu\LocalActionManager->getActionsForRoute('system.modules_...')
#3 /code/web/core/modules/block/src/BlockViewBuilder.php(171): Drupal\Core\Menu\Plugin\Block\LocalActionsBlock->build()
#4 [internal function]: Drupal\block\BlockViewBuilder::preRender(Array)
#5 /code/web/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php(113): call_user_func_array('Drupal\\block\\Bl...', Array)
#6 /code/web/core/lib/Drupal/Core/Render/Renderer.php(870): Drupal\Core\Render\Renderer->doTrustedCallback('Drupal\\block\\Bl...', Array, 'Render #pre_ren...', 'exception', 'Drupal\\Core\\Ren...')
#7 /code/web/core/lib/Drupal/Core/Render/Renderer.php(432): Drupal\Core\Render\Renderer->doCallback('#pre_render', 'Drupal\\block\\Bl...', Array)
#8 /code/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender(Array)
#9 /code/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender(Array, false)
#10 /code/web/core/lib/Drupal/Core/Template/TwigExtension.php(484): Drupal\Core\Render\Renderer->render(Array)
#11 /files/php/twig/678ecf147c807_page.html.twig_CiIyKlwi1CiiVfhMLJjmz4BX0/98gFkY9cIZo0bQJ1_QGhaX98smPe7gsMtSAC39cdu-Y.php(90): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#12 /code/vendor/twig/twig/src/Template.php(387): __TwigTemplate_0e19dbed70a1ef5fd668bdace6bdbdce->doDisplay(Array, Array)
#13 /code/vendor/twig/twig/src/Template.php(343): Twig\Template->yield(Array, Array)
#14 /code/vendor/twig/twig/src/Template.php(358): Twig\Template->display(Array)
#15 /code/vendor/twig/twig/src/TemplateWrapper.php(35): Twig\Template->render(Array)
#16 /code/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render(Array)
#17 /code/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): twig_render_template('core/themes/cla...', Array)
#18 /code/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render('page', Array)
#19 /code/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender(Array, false)
#20 /code/web/core/lib/Drupal/Core/Template/TwigExtension.php(484): Drupal\Core\Render\Renderer->render(Array)
#21 /files/php/twig/678ecf147c807_html.html.twig_5PuhOBihR5J2SomMX1OHMMKUe/aFbEDfVcpSz7WS-gVUQnxHFhmcE3cKm5zGMfYZWptOI.php(91): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#22 /code/vendor/twig/twig/src/Template.php(387): __TwigTemplate_28dda737252b4ec9e62e7e0f81eef67e->doDisplay(Array, Array)
#23 /code/vendor/twig/twig/src/Template.php(343): Twig\Template->yield(Array, Array)
#24 /code/vendor/twig/twig/src/Template.php(358): Twig\Template->display(Array)
#25 /code/vendor/twig/twig/src/TemplateWrapper.php(35): Twig\Template->render(Array)
#26 /code/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render(Array)
#27 /code/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): twig_render_template('core/themes/cla...', Array)
#28 /code/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render('html', Array)
#29 /code/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender(Array, false)
#30 /code/web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(158): Drupal\Core\Render\Renderer->render(Array)
<snip>
πŸ‡ΊπŸ‡ΈUnited States aangel

aangel β†’ created an issue.

πŸ‡ΊπŸ‡ΈUnited States aangel

Additional email options are:

https://mailcatcher.me β€” Free tool that can be hosted anywhere on the net. Captures emails and provides a GUI to them.
https://mailtrap.io β€” Up to 100 inbox emails per month; paid plans offer more
https://testmail.app β€” Up to 100 inbox emails per month for free; paid plans offer more
https://yopmail.com β€” This might be exactly like how Ethereal.email worked
https://yopmail.com β€” An email forwarding service (I don’t quite understand what it does)

πŸ‡ΊπŸ‡ΈUnited States aangel

I just released 3.0.0-beta1. Closing this.

πŸ‡ΊπŸ‡ΈUnited States aangel

aangel β†’ created an issue.

πŸ‡ΊπŸ‡ΈUnited States aangel

I should mention that I'm going to convert the current tests in ATK (almost two dozen right now) to work on Drupal CMS.

And at BADCamp, during the Starshot Summit (which was, as you can imagine, well-attended), Tim mentioned that there will be another chance to create Starshot initiatives. I floated the idea of one that creates even more E2E tests than I'll be able to make on my own with my team. The opportunity to create more initiative somes up at the end of November.

But I'm certain I want to do all that in Playwright and will advocate for using it if this does become an initiative. Playwright is very fun to work with. :-)

πŸ‡ΊπŸ‡ΈUnited States aangel

@wim my pleasure.

The speed difference is due to a few things.

First, the Cypress test runner operates in the browser and typically browsers run JS much slower than, say, node on the OS level. Playwright runs on the OS level then communicates with the browser to issue commands (via CDP or WebKit Protocol).

Be aware that there are some advantages to having the test runner operate within the browserβ€”one has complete access to the code being tested (especially useful for testing front-end JS code). Unfortunately, this complete access comes at the cost of execution time.

Second, Cypress has to re-start the browser for every test.

Third, the method Playwright uses to auto-wait for elements to appear is more efficient than the one Cypress uses.

There might be other reasons but these seem to be the biggest ones.

I'm working on getting a demo of Automated Testing Kit onto DrupalForge.org and SimplyTest. me; hopefully I can post a link
"soon."

BTW, it's not an outlier that tests run 75% faster on Playwrightβ€”it's common.

Here is the team that switched:

How We Reduced Testing Time By 70% β€” by Moving From Cypress to Playwright
Lisa Weilguni, Oct. 2023

https://medium.com/lingvano/how-we-reduced-testing-time-by-70-by-moving-...

Cypress vs Playwright: 70% Faster Automation
The Test Automation Experience, Jan. 2024

https://youtu.be/n6UYHeZBMiY

Their timing improvement:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚          Task          β”‚ Cypress  β”‚ Playwright β”‚ Difference β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Run tests locally      β”‚ 1min 27s β”‚ 25s        β”‚ -72%       β”‚
β”‚ Run tests on GitHub CI β”‚ 6min 38s β”‚ 3min 43s   β”‚ -44%       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Production build 0.71.5 2024