Skip to content

e2e-test: Fix dirty state e2e test#22448

Merged
noahtallen merged 3 commits into
masterfrom
fix/dirty-state-e2e-test
May 19, 2020
Merged

e2e-test: Fix dirty state e2e test#22448
noahtallen merged 3 commits into
masterfrom
fix/dirty-state-e2e-test

Conversation

@noahtallen
Copy link
Copy Markdown
Member

@noahtallen noahtallen commented May 18, 2020

Description

Fixes test skipped in #22447.

In #22140, a change was made to the inserter to insert the block at the current selection. Since the e2e test had selected test inside a nested template part, the block was being inserted there, though it was supposed to be inserted at the end of the document. Before that PR, the behavior was to insert it at the end of the document, and not at the current selection.

The fix is to select the document in the block breadcrumb before adding the block. This clears any selection so that adding the block block dirties the root entity and not a nested entity.

How has this been tested?

e2e tests should pass.

Types of changes

Bug fix

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

A change to the inserter was causing the edit meant
for the document root to be applied to the template
part instead. Obviousy, this meant that the test
considered the wrong entity to be dirty, which resulted
in a failure. This updates the test to always insert the
block in the document, and not in a template part.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 18, 2020

Size Change: +989 B (0%)

Total Size: 1.11 MB

Filename Size Change
build/annotations/index.js 3.62 kB -1 B
build/block-directory/index.js 6.93 kB -1 B
build/block-editor/index.js 105 kB -1 B
build/block-library/index.js 119 kB +227 B (0%)
build/blocks/index.js 48.1 kB +2 B (0%)
build/components/index.js 182 kB +2 B (0%)
build/compose/index.js 6.68 kB +1 B
build/core-data/index.js 11.4 kB +1 B
build/data-controls/index.js 1.29 kB +1 B
build/edit-navigation/index.js 6.6 kB +3 B (0%)
build/edit-post/index.js 302 kB +2 B (0%)
build/edit-site/index.js 12.8 kB +741 B (5%) 🔍
build/editor/index.js 44.3 kB +7 B (0%)
build/element/index.js 4.65 kB -1 B
build/format-library/index.js 7.64 kB -1 B
build/hooks/index.js 2.13 kB +1 B
build/keyboard-shortcuts/index.js 2.51 kB +1 B
build/keycodes/index.js 1.94 kB +2 B (0%)
build/list-reusable-blocks/index.js 3.13 kB -1 B
build/media-utils/index.js 5.29 kB +2 B (0%)
build/notices/index.js 1.79 kB +1 B
build/nux/index.js 3.4 kB +2 B (0%)
build/plugins/index.js 2.56 kB -2 B (0%)
build/rich-text/index.js 14.8 kB +2 B (0%)
build/server-side-render/index.js 2.68 kB -1 B
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.02 kB 0 B
build/api-fetch/index.js 3.39 kB 0 B
build/autop/index.js 2.83 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/style-rtl.css 790 B 0 B
build/block-directory/style.css 791 B 0 B
build/block-editor/style-rtl.css 10.8 kB 0 B
build/block-editor/style.css 10.8 kB 0 B
build/block-library/editor-rtl.css 7.22 kB 0 B
build/block-library/editor.css 7.22 kB 0 B
build/block-library/style-rtl.css 7.48 kB 0 B
build/block-library/style.css 7.48 kB 0 B
build/block-library/theme-rtl.css 683 B 0 B
build/block-library/theme.css 685 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/components/style-rtl.css 17.1 kB 0 B
build/components/style.css 17.1 kB 0 B
build/data/index.js 8.42 kB 0 B
build/date/index.js 5.47 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.11 kB 0 B
build/edit-navigation/style-rtl.css 857 B 0 B
build/edit-navigation/style.css 856 B 0 B
build/edit-post/style-rtl.css 12.2 kB 0 B
build/edit-post/style.css 12.2 kB 0 B
build/edit-site/style-rtl.css 5.22 kB 0 B
build/edit-site/style.css 5.22 kB 0 B
build/edit-widgets/index.js 7.73 kB 0 B
build/edit-widgets/style-rtl.css 4.59 kB 0 B
build/edit-widgets/style.css 4.59 kB 0 B
build/editor/editor-styles-rtl.css 425 B 0 B
build/editor/editor-styles.css 428 B 0 B
build/editor/style-rtl.css 5.07 kB 0 B
build/editor/style.css 5.08 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.02 kB 0 B
build/viewport/index.js 1.84 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

Comment thread packages/e2e-tests/specs/experiments/multi-entity-editing.test.js Outdated
Co-authored-by: Enrique Piqueras <epiqueras@users.noreply.github.com>
@jorgefilipecosta
Copy link
Copy Markdown
Member

Thank you for the fast fix 👍

@noahtallen noahtallen changed the title e2e-test: Fix dirty state failure caused by incorrect block insertion e2e-test: Fix dirty state e2e test May 19, 2020
@noahtallen noahtallen merged commit 7452701 into master May 19, 2020
@noahtallen noahtallen deleted the fix/dirty-state-e2e-test branch May 19, 2020 17:29
@github-actions github-actions Bot added this to the Gutenberg 8.2 milestone May 19, 2020
@aduth
Copy link
Copy Markdown
Member

aduth commented May 20, 2020

Noting that I've observed at least one intermittent failure from this test (after these changes), in #22379 (a documentation-only pull request):

FAIL packages/e2e-tests/specs/experiments/multi-entity-editing.test.js (49.64s)

  ● Multi-entity editor states › Multi-entity edit › should only dirty the parent entity when editing the parent
    TimeoutError: waiting for selector ".block-editor-inserter__menu" failed: timeout 30000ms exceeded
      240 | 			// Add paragraph block to the end of the document.
      241 | 			await page.click( '.block-editor-button-block-appender' );
    > 242 | 			await page.waitForSelector( '.block-editor-inserter__menu' );
          | 			           ^
      243 | 			await page.click( 'button.editor-block-list-item-paragraph' );
      244 | 
      245 | 			// Add changes to the main parent entity.
      at new WaitTask (../../node_modules/puppeteer/lib/DOMWorld.js:486:34)
      at DOMWorld._waitForSelectorOrXPath (../../node_modules/puppeteer/lib/DOMWorld.js:420:26)
      at DOMWorld.waitForSelector (../../node_modules/puppeteer/lib/DOMWorld.js:385:21)
      at Frame.waitForSelector (../../node_modules/puppeteer/lib/FrameManager.js:561:51)
      at Frame.<anonymous> (../../node_modules/puppeteer/lib/helper.js:106:31)
      at Page.waitForSelector (../../node_modules/puppeteer/lib/Page.js:1007:33)
      at Object.<anonymous> (specs/experiments/multi-entity-editing.test.js:242:15)
          at runMicrotasks (<anonymous>)

@noahtallen
Copy link
Copy Markdown
Member Author

I also saw that intermittently yesterday. Not sure what it could be caused by 🤔 is there a way we can store video recordings of failed tests as artifacts with puppeteer?

@epiqueras
Copy link
Copy Markdown
Contributor

Yes, but not for free.

@aduth
Copy link
Copy Markdown
Member

aduth commented May 21, 2020

@noahtallen There's a few debugging tips in the end-to-end testing overview, specifically for network and CPU throttling which can help better emulate a Travis-like environment if you're having trouble to reproduce locally:

https://github.com/WordPress/gutenberg/blob/master/docs/contributors/testing-overview.md#end-to-end-testing

@aduth
Copy link
Copy Markdown
Member

aduth commented May 21, 2020

I'm not too familiar with what exactly this is testing or if there's something we can use here, but at least for this specific interaction of "Add a block", there's an insertBlock end-to-end test utility. If the test is verifying some behavior of the Site Editor that doesn't behave the same as in the post editor, it might still be nice to have an equivalent utility, or better yet try to find a way to have this same utility work across the various editors. The general thinking being: The more durable shared utilities we can have, hopefully the less time we'd spend tracking down these specific intermittent failures.

@noahtallen
Copy link
Copy Markdown
Member Author

@aduth Yeah, I was originally solving the problem of "insert the block at the end of the wp_template" (so that the parent entity would be dirtied). Since the current selection in the e2e test was in a nested template part block, the block was being inserted there, and not in the template.

But we may be able to use insertBlock now that I found a different way to clear the selection. I'll try that :)

@noahtallen
Copy link
Copy Markdown
Member Author

#22532 tries this approach

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Package] E2E Tests /packages/e2e-tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants