Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

E2E Tests: Mock Embed response for InnerBlocks locking test #20481

Merged
merged 1 commit into from
Mar 12, 2020

Conversation

aduth
Copy link
Member

@aduth aduth commented Feb 26, 2020

This pull request seeks to improve end-to-end test stability for the editor/plugins/innerblocks-locking-all-embed.js tests. These test cases have been observed to fail intermittently.

Example: https://travis-ci.com/WordPress/gutenberg/jobs/291310078

It is suspected that these are caused by unreliability of third-party network requests. This has been a problem in the past for other tests which include embeds, which led to the implementation of mocking for the core embedding tests (#10467, #11250).

Testing Instructions:

Verify that the affected tests still pass:

npm run test-e2e packages/e2e-tests/specs/editor/plugins/innerblocks-locking-all-embed.js

@aduth aduth added [Type] Automated Testing Testing infrastructure changes impacting the execution of end-to-end (E2E) and/or unit tests. [Package] E2E Tests /packages/e2e-tests labels Feb 26, 2020
@github-actions
Copy link

github-actions bot commented Feb 26, 2020

Size Change: 0 B

Total Size: 864 kB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.01 kB 0 B
build/annotations/index.js 3.43 kB 0 B
build/api-fetch/index.js 3.39 kB 0 B
build/autop/index.js 2.58 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.02 kB 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 760 B 0 B
build/block-editor/index.js 105 kB 0 B
build/block-editor/style-rtl.css 10.6 kB 0 B
build/block-editor/style.css 10.6 kB 0 B
build/block-library/editor-rtl.css 7.23 kB 0 B
build/block-library/editor.css 7.24 kB 0 B
build/block-library/index.js 116 kB 0 B
build/block-library/style-rtl.css 7.38 kB 0 B
build/block-library/style.css 7.39 kB 0 B
build/block-library/theme-rtl.css 669 B 0 B
build/block-library/theme.css 671 B 0 B
build/block-serialization-default-parser/index.js 1.65 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 57.7 kB 0 B
build/components/index.js 191 kB 0 B
build/components/style-rtl.css 15.6 kB 0 B
build/components/style.css 15.6 kB 0 B
build/compose/index.js 5.75 kB 0 B
build/core-data/index.js 10.6 kB 0 B
build/data-controls/index.js 1.03 kB 0 B
build/data/index.js 8.22 kB 0 B
build/date/index.js 5.36 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 569 B 0 B
build/dom/index.js 3.06 kB 0 B
build/edit-post/index.js 91.3 kB 0 B
build/edit-post/style-rtl.css 8.64 kB 0 B
build/edit-post/style.css 8.64 kB 0 B
build/edit-site/index.js 4.64 kB 0 B
build/edit-site/style-rtl.css 2.48 kB 0 B
build/edit-site/style.css 2.48 kB 0 B
build/edit-widgets/index.js 4.44 kB 0 B
build/edit-widgets/style-rtl.css 2.58 kB 0 B
build/edit-widgets/style.css 2.58 kB 0 B
build/editor/editor-styles-rtl.css 381 B 0 B
build/editor/editor-styles.css 382 B 0 B
build/editor/index.js 43.8 kB 0 B
build/editor/style-rtl.css 3.98 kB 0 B
build/editor/style.css 3.97 kB 0 B
build/element/index.js 4.45 kB 0 B
build/escape-html/index.js 734 B 0 B
build/format-library/index.js 7.09 kB 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 1.92 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.49 kB 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 2.3 kB 0 B
build/keycodes/index.js 1.68 kB 0 B
build/list-reusable-blocks/index.js 2.99 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 4.85 kB 0 B
build/notices/index.js 1.57 kB 0 B
build/nux/index.js 3.01 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.54 kB 0 B
build/primitives/index.js 1.49 kB 0 B
build/priority-queue/index.js 780 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/rich-text/index.js 14.3 kB 0 B
build/server-side-render/index.js 2.55 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4 kB 0 B
build/viewport/index.js 1.61 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.18 kB 0 B

compressed-size-action

@aduth
Copy link
Member Author

aduth commented Feb 27, 2020

Interestingly, the build is currently failing with the exact intermittent issue this was intended to address:

FAIL packages/e2e-tests/specs/editor/plugins/innerblocks-locking-all-embed.js (7.353s)
  Embed block inside a locked all parent
    ✕ embed block should be able to embed external content (5187ms)
  ● Embed block inside a locked all parent › embed block should be able to embed external content
    Error: sandbox not initialized

https://travis-ci.com/WordPress/gutenberg/jobs/291457268

I'll need to spend more time investigating this.

@aduth aduth added the [Status] In Progress Tracking issues with work in progress label Feb 27, 2020
@aduth
Copy link
Member Author

aduth commented Mar 11, 2020

Request interception seems to be working as expected, both locally and in Travis. I created a test commit 4bf28a6c5f0d6c8a0ee5dc5b54f52cb643a5344d to verify this, which output as expected:

 ● Embed block inside a locked all parent › embed block should be able to embed external content
    expect(jest.fn()).not.toHaveLogged(expected)
    Expected mock function not to be called but it was called with:
    ["intercepted", "http://localhost:8889/index.php?rest_route=%2Foembed%2F1.0%2Fproxy&url=https%3A%2F%2Ftwitter.com%2Fwordpress&_locale=user", "responding with", {"body": "{\"url\":\"https://twitter.com/wordpress\",\"html\":\"<p>Mock success response.</p>\",\"type\":\"rich\",\"provider_name\":\"Twitter\",\"provider_url\":\"https://twitter.com\",\"version\":\"1.0\"}", "content": "application/json"}]

The errors seen previously "Error: sandbox not initialized" is most definitely caused by something related with Twitter. You can Ctrl-F search the thrown error with message "sandbox not initialized" in widgets.js:

https://platform.twitter.com/widgets.js

The interception introduced here should be preventing this file from being loaded, and evidenced by the logging above, it does, at least sometimes. I tried debugging some of the machinery of our request mocking to see where things could possibly go wrong, and while I was able to make some general improvements (#20811), I don't believe these to be a cause of failure, since the Travis site is set up in a way we expect it to be with permalinks.

@aduth
Copy link
Member Author

aduth commented Mar 12, 2020

In any case, this test needs mocking. We don't want real network requests to third-parties, because those can be unreliable and cause false failures. It at least appears to be working sometimes, or at least as effectively as the existing embedding tests and their mocking upon which it's based.

@aduth aduth merged commit d60fd39 into master Mar 12, 2020
@aduth aduth deleted the fix/e2e-test-innerblocks-embed branch March 12, 2020 13:06
@aduth aduth removed the [Status] In Progress Tracking issues with work in progress label Mar 12, 2020
@github-actions github-actions bot added this to the Gutenberg 7.8 milestone Mar 12, 2020
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 [Type] Automated Testing Testing infrastructure changes impacting the execution of end-to-end (E2E) and/or unit tests.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant