diff --git a/e2e-tests/contentful/cypress.json b/e2e-tests/contentful/cypress.json index 39598f8798b12..b1ab75eaa46f7 100644 --- a/e2e-tests/contentful/cypress.json +++ b/e2e-tests/contentful/cypress.json @@ -1,7 +1,7 @@ { "baseUrl": "http://localhost:9000", "retries": { - "runMode": 2, + "runMode": 0, "openMode": 0 }, "viewportWidth": 1440, diff --git a/e2e-tests/contentful/cypress/integration/gatsby-image.js b/e2e-tests/contentful/cypress/integration/gatsby-image.js index 14f49dd6d874a..a4136c2868551 100644 --- a/e2e-tests/contentful/cypress/integration/gatsby-image.js +++ b/e2e-tests/contentful/cypress/integration/gatsby-image.js @@ -1,3 +1,10 @@ +const testConfig = { + retries: { + runMode: 2, + openMode: 0, + }, +} + function hasSVGPlaceholder(el) { el.children(`img`) .should(`have.attr`, `src`) @@ -41,9 +48,9 @@ describe(`gatsby-image`, () => { beforeEach(() => { cy.visit("/gatsby-image").waitForRouteChange() }) - it(`fluid`, () => testGatsbyImage(`fluid`, hasJPEGPlaceholder)) - it(`fixed`, () => testGatsbyImage(`fixed`, hasJPEGPlaceholder)) - it(`webp`, () => testGatsbyImage(`webp`, hasJPEGPlaceholder)) - it(`traced`, () => testGatsbyImage(`traced`, hasSVGPlaceholder)) - it(`sqip`, () => testGatsbyImage(`sqip`, hasSVGPlaceholder)) + it(`fluid`, testConfig, () => testGatsbyImage(`fluid`, hasJPEGPlaceholder)) + it(`fixed`, testConfig, () => testGatsbyImage(`fixed`, hasJPEGPlaceholder)) + it(`webp`, testConfig, () => testGatsbyImage(`webp`, hasJPEGPlaceholder)) + it(`traced`, testConfig, () => testGatsbyImage(`traced`, hasSVGPlaceholder)) + it(`sqip`, testConfig, () => testGatsbyImage(`sqip`, hasSVGPlaceholder)) }) diff --git a/e2e-tests/contentful/cypress/integration/gatsby-plugin-image.js b/e2e-tests/contentful/cypress/integration/gatsby-plugin-image.js index a4e60f7bce737..3ad283ea8a9aa 100644 --- a/e2e-tests/contentful/cypress/integration/gatsby-plugin-image.js +++ b/e2e-tests/contentful/cypress/integration/gatsby-plugin-image.js @@ -1,3 +1,10 @@ +const testConfig = { + retries: { + runMode: 2, + openMode: 0, + }, +} + function hasSVGPlaceholder(el) { el.find(`img`) .should(`have.attr`, `src`) @@ -54,13 +61,23 @@ describe(`gatsby-plugin-image`, () => { cy.visit("/gatsby-plugin-image").waitForRouteChange() }) - it(`constrained`, () => - testGatsbyPluginImage(`constrained`, hasColorPlaceholder)) - it(`full-width`, () => testGatsbyPluginImage(`full-width`, hasNoPlaceholder)) - it(`fixed`, () => testGatsbyPluginImage(`fixed`, hasNoPlaceholder)) - it(`dominant-color`, () => - testGatsbyPluginImage(`dominant-color`, hasColorPlaceholder)) - it(`traced`, () => testGatsbyPluginImage(`traced`, hasSVGPlaceholder)) - it(`blurred`, () => testGatsbyPluginImage(`blurred`, hasJPEGPlaceholder)) - it(`sqip`, () => testGatsbyPluginImage(`sqip`, hasSVGPlaceholder)) + it(`constrained`, testConfig, () => + testGatsbyPluginImage(`constrained`, hasColorPlaceholder) + ) + it(`full-width`, testConfig, () => + testGatsbyPluginImage(`full-width`, hasNoPlaceholder) + ) + it(`fixed`, testConfig, () => + testGatsbyPluginImage(`fixed`, hasNoPlaceholder) + ) + it(`dominant-color`, testConfig, () => + testGatsbyPluginImage(`dominant-color`, hasColorPlaceholder) + ) + it(`traced`, testConfig, () => + testGatsbyPluginImage(`traced`, hasSVGPlaceholder) + ) + it(`blurred`, testConfig, () => + testGatsbyPluginImage(`blurred`, hasJPEGPlaceholder) + ) + it(`sqip`, testConfig, () => testGatsbyPluginImage(`sqip`, hasSVGPlaceholder)) }) diff --git a/e2e-tests/contentful/cypress/integration/rich-text.js b/e2e-tests/contentful/cypress/integration/rich-text.js index fe8087da7eaeb..fd23726411154 100644 --- a/e2e-tests/contentful/cypress/integration/rich-text.js +++ b/e2e-tests/contentful/cypress/integration/rich-text.js @@ -3,6 +3,10 @@ describe(`rich-text`, () => { cy.visit("/rich-text").waitForRouteChange() }) it(`rich-text: All Features`, () => { + cy.get(`[data-cy-id="rich-text-all-features"]`).scrollIntoView({ + duration: 500, + }) + cy.wait(1000) cy.get(`[data-cy-id="rich-text-all-features"]`).snapshot() }) it(`rich-text: Basic`, () => { @@ -12,6 +16,10 @@ describe(`rich-text`, () => { cy.get(`[data-cy-id="rich-text-embedded-entry"]`).snapshot() }) it(`rich-text: Embedded Asset`, () => { + cy.get(`[data-cy-id="rich-text-embedded-asset"]`).scrollIntoView({ + duration: 500, + }) + cy.wait(1000) cy.get(`[data-cy-id="rich-text-embedded-asset"]`).snapshot() }) it(`rich-text: Embedded Entry With Deep Reference Loop`, () => { diff --git a/e2e-tests/contentful/package.json b/e2e-tests/contentful/package.json index 692d092ae4136..03d23a2dcd510 100644 --- a/e2e-tests/contentful/package.json +++ b/e2e-tests/contentful/package.json @@ -8,13 +8,13 @@ "cypress": "^6.8.0", "cypress-image-snapshot": "^4.0.1", "gatsby": "^3.1.1", - "gatsby-image": "^3.1.0", - "gatsby-plugin-image": "^1.1.1", + "gatsby-image": "^3.3.0", + "gatsby-plugin-image": "^1.3.1", "gatsby-plugin-sharp": "^3.1.2", "gatsby-source-contentful": "^5.1.1", - "gatsby-transformer-remark": "^3.2.0", + "gatsby-transformer-remark": "^4.0.0", "gatsby-transformer-sharp": "^3.3.0", - "gatsby-transformer-sqip": "3.1.1", + "gatsby-transformer-sqip": "3.3.1", "modern-normalize": "^1.0.0", "prop-types": "^15.7.2", "react": "^17.0.1", diff --git a/e2e-tests/contentful/schema.gql b/e2e-tests/contentful/schema.gql index 04a295fdccd87..f9a4742d433a4 100644 --- a/e2e-tests/contentful/schema.gql +++ b/e2e-tests/contentful/schema.gql @@ -1,4 +1,4 @@ -### Type definitions saved at 2021-04-27T13:44:24.013Z ### +### Type definitions saved at 2021-05-12T15:50:31.482Z ### type File implements Node @dontInfer { sourceInstanceName: String! @@ -125,7 +125,7 @@ type MarkdownWordCount { words: Int } -type MarkdownRemark implements Node @childOf(mimeTypes: ["text/markdown", "text/x-markdown"], types: ["contentfulTextLongPlainTextNode", "contentfulTextLongMarkdownTextNode"]) @derivedTypes @dontInfer { +type MarkdownRemark implements Node @childOf(mimeTypes: ["text/markdown", "text/x-markdown"], types: ["contentfulTextLongPlainTextNode", "contentfulTextLongMarkdownTextNode"]) @dontInfer { frontmatter: MarkdownRemarkFrontmatter excerpt: String rawMarkdownBody: String @@ -146,7 +146,7 @@ interface ContentfulReference { id: ID! } -type ContentfulAsset implements ContentfulReference & Node @derivedTypes @dontInfer { +type ContentfulAsset implements ContentfulReference & Node @dontInfer { contentful_id: String! spaceId: String createdAt: Date @dateformat @@ -158,14 +158,14 @@ type ContentfulAsset implements ContentfulReference & Node @derivedTypes @dontIn sys: ContentfulAssetSys } -type ContentfulAssetFile @derivedTypes { +type ContentfulAssetFile { url: String details: ContentfulAssetFileDetails fileName: String contentType: String } -type ContentfulAssetFileDetails @derivedTypes { +type ContentfulAssetFileDetails { size: Int image: ContentfulAssetFileDetailsImage } @@ -180,12 +180,12 @@ type ContentfulAssetSys { revision: Int } -type ContentfulNumber implements ContentfulReference & ContentfulEntry & Node @derivedTypes @dontInfer { +type ContentfulNumber implements ContentfulReference & ContentfulEntry & Node @dontInfer { contentful_id: String! node_locale: String! title: String integer: Int - content_reference: [ContentfulContentReference] @link(by: "id", from: "content reference___NODE") @proxy(from: "content reference___NODE") + content_reference: [ContentfulContentReference] @link(by: "id", from: "content reference___NODE") @proxy(from: "content reference___NODE", fromNode: false) spaceId: String createdAt: Date @dateformat updatedAt: Date @dateformat @@ -193,12 +193,12 @@ type ContentfulNumber implements ContentfulReference & ContentfulEntry & Node @d decimal: Float } -type ContentfulContentReference implements ContentfulReference & ContentfulEntry & Node @derivedTypes @dontInfer { +type ContentfulContentReference implements ContentfulReference & ContentfulEntry & Node @dontInfer { contentful_id: String! node_locale: String! title: String one: ContentfulContentReferenceContentfulTextUnion @link(by: "id", from: "one___NODE") - content_reference: [ContentfulContentReference] @link(by: "id", from: "content reference___NODE") @proxy(from: "content reference___NODE") + content_reference: [ContentfulContentReference] @link(by: "id", from: "content reference___NODE") @proxy(from: "content reference___NODE", fromNode: false) spaceId: String createdAt: Date @dateformat updatedAt: Date @dateformat @@ -208,13 +208,13 @@ type ContentfulContentReference implements ContentfulReference & ContentfulEntry union ContentfulContentReferenceContentfulTextUnion = ContentfulContentReference | ContentfulText -type ContentfulContentReferenceSys @derivedTypes { +type ContentfulContentReferenceSys { type: String revision: Int contentType: ContentfulContentReferenceSysContentType } -type ContentfulContentReferenceSysContentType @derivedTypes { +type ContentfulContentReferenceSysContentType { sys: ContentfulContentReferenceSysContentTypeSys } @@ -226,13 +226,13 @@ type ContentfulContentReferenceSysContentTypeSys { union ContentfulContentReferenceContentfulNumberContentfulTextUnion = ContentfulContentReference | ContentfulNumber | ContentfulText -type ContentfulNumberSys @derivedTypes { +type ContentfulNumberSys { type: String revision: Int contentType: ContentfulNumberSysContentType } -type ContentfulNumberSysContentType @derivedTypes { +type ContentfulNumberSysContentType { sys: ContentfulNumberSysContentTypeSys } @@ -242,7 +242,7 @@ type ContentfulNumberSysContentTypeSys { id: String } -type ContentfulText implements ContentfulReference & ContentfulEntry & Node @derivedTypes @dontInfer { +type ContentfulText implements ContentfulReference & ContentfulEntry & Node @dontInfer { contentful_id: String! node_locale: String! title: String @@ -253,11 +253,11 @@ type ContentfulText implements ContentfulReference & ContentfulEntry & Node @der sys: ContentfulTextSys longPlain: contentfulTextLongPlainTextNode @link(by: "id", from: "longPlain___NODE") short: String - content_reference: [ContentfulContentReference] @link(by: "id", from: "content reference___NODE") @proxy(from: "content reference___NODE") + content_reference: [ContentfulContentReference] @link(by: "id", from: "content reference___NODE") @proxy(from: "content reference___NODE", fromNode: false) shortList: [String] } -type contentfulTextLongMarkdownTextNode implements Node @derivedTypes @childOf(types: ["ContentfulText"]) @dontInfer { +type contentfulTextLongMarkdownTextNode implements Node @childOf(mimeTypes: [], types: ["ContentfulText"]) @dontInfer { longMarkdown: String sys: contentfulTextLongMarkdownTextNodeSys } @@ -266,13 +266,13 @@ type contentfulTextLongMarkdownTextNodeSys { type: String } -type ContentfulTextSys @derivedTypes { +type ContentfulTextSys { type: String revision: Int contentType: ContentfulTextSysContentType } -type ContentfulTextSysContentType @derivedTypes { +type ContentfulTextSysContentType { sys: ContentfulTextSysContentTypeSys } @@ -282,7 +282,7 @@ type ContentfulTextSysContentTypeSys { id: String } -type contentfulTextLongPlainTextNode implements Node @derivedTypes @childOf(types: ["ContentfulText"]) @dontInfer { +type contentfulTextLongPlainTextNode implements Node @childOf(mimeTypes: [], types: ["ContentfulText"]) @dontInfer { longPlain: String sys: contentfulTextLongPlainTextNodeSys } @@ -291,7 +291,7 @@ type contentfulTextLongPlainTextNodeSys { type: String } -type ContentfulMediaReference implements ContentfulReference & ContentfulEntry & Node @derivedTypes @dontInfer { +type ContentfulMediaReference implements ContentfulReference & ContentfulEntry & Node @dontInfer { contentful_id: String! node_locale: String! title: String @@ -303,13 +303,13 @@ type ContentfulMediaReference implements ContentfulReference & ContentfulEntry & one: ContentfulAsset @link(by: "id", from: "one___NODE") } -type ContentfulMediaReferenceSys @derivedTypes { +type ContentfulMediaReferenceSys { type: String revision: Int contentType: ContentfulMediaReferenceSysContentType } -type ContentfulMediaReferenceSysContentType @derivedTypes { +type ContentfulMediaReferenceSysContentType { sys: ContentfulMediaReferenceSysContentTypeSys } @@ -319,7 +319,7 @@ type ContentfulMediaReferenceSysContentTypeSys { id: String } -type ContentfulBoolean implements ContentfulReference & ContentfulEntry & Node @derivedTypes @dontInfer { +type ContentfulBoolean implements ContentfulReference & ContentfulEntry & Node @dontInfer { contentful_id: String! node_locale: String! title: String @@ -330,13 +330,13 @@ type ContentfulBoolean implements ContentfulReference & ContentfulEntry & Node @ boolean: Boolean } -type ContentfulBooleanSys @derivedTypes { +type ContentfulBooleanSys { type: String revision: Int contentType: ContentfulBooleanSysContentType } -type ContentfulBooleanSysContentType @derivedTypes { +type ContentfulBooleanSysContentType { sys: ContentfulBooleanSysContentTypeSys } @@ -346,7 +346,7 @@ type ContentfulBooleanSysContentTypeSys { id: String } -type ContentfulDate implements ContentfulReference & ContentfulEntry & Node @derivedTypes @dontInfer { +type ContentfulDate implements ContentfulReference & ContentfulEntry & Node @dontInfer { contentful_id: String! node_locale: String! title: String @@ -359,13 +359,13 @@ type ContentfulDate implements ContentfulReference & ContentfulEntry & Node @der date: Date @dateformat } -type ContentfulDateSys @derivedTypes { +type ContentfulDateSys { type: String revision: Int contentType: ContentfulDateSysContentType } -type ContentfulDateSysContentType @derivedTypes { +type ContentfulDateSysContentType { sys: ContentfulDateSysContentTypeSys } @@ -375,7 +375,7 @@ type ContentfulDateSysContentTypeSys { id: String } -type ContentfulLocation implements ContentfulReference & ContentfulEntry & Node @derivedTypes @dontInfer { +type ContentfulLocation implements ContentfulReference & ContentfulEntry & Node @dontInfer { contentful_id: String! node_locale: String! title: String @@ -391,13 +391,13 @@ type ContentfulLocationLocation { lon: Float } -type ContentfulLocationSys @derivedTypes { +type ContentfulLocationSys { type: String revision: Int contentType: ContentfulLocationSysContentType } -type ContentfulLocationSysContentType @derivedTypes { +type ContentfulLocationSysContentType { sys: ContentfulLocationSysContentTypeSys } @@ -407,7 +407,7 @@ type ContentfulLocationSysContentTypeSys { id: String } -type ContentfulJson implements ContentfulReference & ContentfulEntry & Node @derivedTypes @dontInfer { +type ContentfulJson implements ContentfulReference & ContentfulEntry & Node @dontInfer { contentful_id: String! node_locale: String! title: String @@ -418,7 +418,7 @@ type ContentfulJson implements ContentfulReference & ContentfulEntry & Node @der sys: ContentfulJsonSys } -type contentfulJsonJsonJsonNode implements Node @derivedTypes @childOf(types: ["ContentfulJson"]) @dontInfer { +type contentfulJsonJsonJsonNode implements Node @childOf(mimeTypes: [], types: ["ContentfulJson"]) @dontInfer { Actors: [contentfulJsonJsonJsonNodeActors] sys: contentfulJsonJsonJsonNodeSys name: String @@ -429,7 +429,7 @@ type contentfulJsonJsonJsonNode implements Node @derivedTypes @childOf(types: [" type contentfulJsonJsonJsonNodeActors { name: String age: Int - Born_At: String @proxy(from: "Born At") + Born_At: String @proxy(from: "Born At", fromNode: false) Birthdate: String photo: String wife: String @@ -443,13 +443,13 @@ type contentfulJsonJsonJsonNodeSys { type: String } -type ContentfulJsonSys @derivedTypes { +type ContentfulJsonSys { type: String revision: Int contentType: ContentfulJsonSysContentType } -type ContentfulJsonSysContentType @derivedTypes { +type ContentfulJsonSysContentType { sys: ContentfulJsonSysContentTypeSys } @@ -459,7 +459,7 @@ type ContentfulJsonSysContentTypeSys { id: String } -type ContentfulRichText implements ContentfulReference & ContentfulEntry & Node @derivedTypes @dontInfer { +type ContentfulRichText implements ContentfulReference & ContentfulEntry & Node @dontInfer { contentful_id: String! node_locale: String! title: String @@ -477,13 +477,13 @@ type ContentfulRichTextRichText { union ContentfulAssetContentfulContentReferenceContentfulLocationContentfulTextUnion = ContentfulAsset | ContentfulContentReference | ContentfulLocation | ContentfulText -type ContentfulRichTextSys @derivedTypes { +type ContentfulRichTextSys { type: String revision: Int contentType: ContentfulRichTextSysContentType } -type ContentfulRichTextSysContentType @derivedTypes { +type ContentfulRichTextSysContentType { sys: ContentfulRichTextSysContentTypeSys } @@ -493,7 +493,7 @@ type ContentfulRichTextSysContentTypeSys { id: String } -type ContentfulContentType implements Node @derivedTypes @dontInfer { +type ContentfulContentType implements Node @dontInfer { name: String displayField: String description: String diff --git a/e2e-tests/contentful/snapshots.js b/e2e-tests/contentful/snapshots.js index fd6075bc45298..441f5c4956cce 100644 --- a/e2e-tests/contentful/snapshots.js +++ b/e2e-tests/contentful/snapshots.js @@ -1,58 +1,58 @@ module.exports = { + "__version": "6.9.1", "content-reference": { "content-reference-many-2nd-level-loop": { - "1": "
[ContentfulInteger] 42
\n[ContentfulText] The quick brown fox jumps over the lazy\n dog.
\n[ContentfulReference] Content Reference: One (Loop A\n -> B): [Content Reference: One (Loop B -> A)]
\n[ContentfulInteger]\n 42
\n[ContentfulText]\n The quick brown fox jumps over the lazy dog.
\n[ContentfulReference]\n Content Reference: One (Loop A -> B)\n : [\n Content Reference: One (Loop B -> A)\n ]
\n[ContentfulInteger] 42
\n[ContentfulText] The quick brown fox jumps over the lazy\n dog.
\n[ContentfulReference] Content Reference: Many (Loop\n B -> A): [Number: Integer, Text: Short, Content Reference: Many (Loop A\n -> B)]
\n[ContentfulInteger]\n 42
\n[ContentfulText]\n The quick brown fox jumps over the lazy dog.
\n[ContentfulReference]\n Content Reference: Many (Loop B -> A)\n : [\n Number: Integer, Text: Short, Content Reference: Many (Loop A ->\n B)\n ]
\n[ContentfulInteger] 42
\n[ContentfulText] The quick brown fox jumps over the lazy\n dog.
\n[ContentfulReference] Content Reference: Many (Loop\n A -> B): [Number: Integer, Text: Short, Content Reference: Many (Loop B\n -> A)]
\n[ContentfulInteger]\n 42
\n[ContentfulText]\n The quick brown fox jumps over the lazy dog.
\n[ContentfulReference]\n Content Reference: Many (Loop A -> B)\n : [\n Number: Integer, Text: Short, Content Reference: Many (Loop B ->\n A)\n ]
\n[ContentfulInteger] 42
\n[ContentfulText] The quick brown fox jumps over the lazy\n dog.
\n[ContentfulReference] Content Reference: Many (Self\n Reference): [Number: Integer, Text: Short, Content Reference: Many (Self\n Reference)]
\n[ContentfulInteger]\n 42
\n[ContentfulText]\n The quick brown fox jumps over the lazy dog.
\n[ContentfulReference]\n Content Reference: Many (Self Reference)\n : [\n Number: Integer, Text: Short, Content Reference: Many (Self\n Reference)\n ]
\n[ContentfulText] The quick brown fox jumps over the lazy\n dog.
\n[ContentfulText]\n The quick brown fox jumps over the lazy dog.
\n[ContentfulReference] Content Reference: One (Loop B\n -> A): [Content Reference: One (Loop A -> B)]
\n[ContentfulReference]\n Content Reference: One (Loop B -> A)\n : [\n Content Reference: One (Loop A -> B)\n ]
\n[ContentfulReference] Content Reference: One (Loop A\n -> B): [Content Reference: One (Loop B -> A)]
\n[ContentfulReference]\n Content Reference: One (Loop A -> B)\n : [\n Content Reference: One (Loop B -> A)\n ]
\n[ContentfulReference] Content Reference: One (Self\n Reference): [Content Reference: One (Self Reference)]
\n[ContentfulReference]\n Content Reference: One (Self Reference)\n : [\n Content Reference: One (Self Reference)\n ]
\nare members of the same family. Their separate existence is a myth. For:
\nscience
\nmusic
\nsport
\netc
\nEurope uses the same vocabulary.
\nThe languages only differ in:
\ntheir grammar
\ntheir pronunciation
\ntheir most common words
\n[Inline-ContentfulText] Text: Short: The\n quick brown fox jumps over the lazy dog.
\nEveryone realizes why a new common language would be desirable: one could\n refuse to pay expensive translators.
\n{\n \"userId\": 1,\n \"id\": 1,\n \"title\": \"delectus aut autem\",\n \"completed\": false\n }
To achieve this, it would be necessary to have uniform grammar,\n pronunciation and more common words.
\n[ContentfulLocation] Lat: 52.51627, Long: 13.3777
\n\n\nIf several languages coalesce, the grammar of the resulting language is\n more simple and regular than that of the individual languages.
\n
The new common language will be more simple and regular than the existing\n European languages. It will be as simple as Occidental; in fact, it will be\n
\nare members of the same family. Their separate existence is a myth. For:
\nscience
\nmusic
\nsport
\netc
\nEurope uses the same vocabulary.
\n \n \nThe languages only differ in:
\ntheir grammar
\ntheir pronunciation
\ntheir most common words
\n[Inline-ContentfulText]\n Text: Short\n :\n The quick brown fox jumps over the lazy dog.
\nEveryone realizes why a new common language would be desirable: one could\n refuse to pay expensive translators.
\n{\n \"userId\": 1,\n \"id\": 1,\n \"title\": \"delectus aut autem\",\n \"completed\": false\n }
To achieve this, it would be necessary to have uniform grammar,\n pronunciation and more common words.
\n[ContentfulLocation] Lat:\n 52.51627\n , Long:\n 13.3777
\n\n\nIf several languages coalesce, the grammar of the resulting language is\n more simple and regular than that of the individual languages.
\n
The new common language will be more simple and regular than the existing\n European languages. It will be as simple as Occidental; in fact, it will be\n
\nare members of the same family. Their separate existence is a myth. For:
\nscience
\nmusic
\nsport
\netc
\nEurope uses the same vocabulary.
\nThe languages only differ in:
\ntheir grammar
\ntheir pronunciation
\ntheir most common words
\nEveryone realizes why a new common language would be desirable: one could\n refuse to pay expensive translators.
\n{\n \"userId\": 1,\n \"id\": 1,\n \"title\": \"delectus aut autem\",\n \"completed\": false\n }
To achieve this, it would be necessary to have uniform grammar,\n pronunciation and more common words.
\n\n\nIf several languages coalesce, the grammar of the resulting language is\n more simple and regular than that of the individual languages.
\n
The new common language will be more simple and regular than the existing\n European languages. It will be as simple as Occidental; in fact, it will be\n
\n[ContentfulText] The quick brown fox jumps over the lazy\n dog.
\n \n \n[ContentfulText]\n The quick brown fox jumps over the lazy dog.
\n \n \n[ContentfulReference] Content Reference: Many (2nd\n level loop): [Number: Integer, Text: Short, Content Reference: One (Loop A\n -> B)]
\n \n \n[ContentfulReference]\n Content Reference: Many (2nd level loop)\n : [\n Number: Integer, Text: Short, Content Reference: One (Loop A ->\n B)\n ]
\n \n \n[ContentfulReference] Content Reference: One (Loop B\n -> A): [Content Reference: One (Loop A -> B)]
\n \n[ContentfulReference]\n Content Reference: One (Loop B -> A)\n : [\n Content Reference: One (Loop A -> B)\n ]
\n \nShould be rendered after this [Inline-ContentfulText] Text: Short: The quick\n brown fox jumps over the lazy dog. and before that
\n \n \nShould be rendered after this [Inline-ContentfulText]\n Text: Short\n :\n The quick brown fox jumps over the lazy dog. and before\n that
\n \n \nShould be rendered after this [Inline-ContentfulContentReference]\n Content Reference: Many (2nd level loop) and before that
\n \n \nShould be rendered after this [Inline-\n ContentfulContentReference\n ]\n Content Reference: Many (2nd level loop) and before that\n
\n \n \nShould be rendered after this [Inline-ContentfulContentReference]\n Content Reference: One (Loop A -> B) and before that
\n \n \nShould be rendered after this [Inline-\n ContentfulContentReference\n ]\n Content Reference: One (Loop A -> B) and before that
\n \n \nThe European languages are members of the same family.\n Their separate existence is a myth. For:
\nEurope uses the same vocabulary.
\n\n\nThe languages only differ in their grammar, their pronunciation and their\n most common words. Everyone realizes why a new common language would be\n desirable: one could refuse to pay expensive translators.
\n
To achieve this, it would be necessary to have uniform grammar,\n pronunciation and more common words. If several languages coalesce, the\n grammar of the resulting language is more simple and regular than that of\n the individual languages. The new common language will be more simple and\n regular than the existing European languages. It will be as simple as\n Occidental; in fact, it will be.
\nThe European languages are members of the same family. Their\n separate existence is a myth. For:
\nEurope uses the same vocabulary.
\n\n\nThe languages only differ in their grammar, their pronunciation and their\n most common words. Everyone realizes why a new common language would be\n desirable: one could refuse to pay expensive translators.
\n
To achieve this, it would be necessary to have uniform grammar,\n pronunciation and more common words. If several languages coalesce, the\n grammar of the resulting language is more simple and regular than that of\n the individual languages. The new common language will be more simple and\n regular than the existing European languages. It will be as simple as\n Occidental; in fact, it will be.
\n{\n \"userId\": 1,\n \"id\": 1,\n \"title\": \"delectus aut autem\",\n \"completed\": false\n}\n
\nThe European languages are members of the same family. Their\n separate existence is a myth. For:
\nEurope uses the same vocabulary.
\n\n\nThe languages only differ in their grammar, their pronunciation and their\n most common words. Everyone realizes why a new common language would be\n desirable: one could refuse to pay expensive translators.
\n
To achieve this, it would be necessary to have uniform grammar,\n pronunciation and more common words. If several languages coalesce, the\n grammar of the resulting language is more simple and regular than that of\n the individual languages. The new common language will be more simple and\n regular than the existing European languages. It will be as simple as\n Occidental; in fact, it will be.
\n{\n\t\"userId\": 1,\n\t\"id\": 1,\n\t\"title\": \"delectus aut autem\",\n\t\"completed\": false\n}\n
\nName: Tom Cruise
\nPhoto:\n https://jsonformatter.org/img/tom-cruise.jpg
\nBirthdate: 1962-7-3T00:12:34.000Z
\nBorn at: Syracuse, NY
\nWeight: 67.5
\nAge: 56
\nWife:
\nChildren: Suri, Isabella Jane, Connor
\nHas children: true
\nHas grey hair: false
\nName: Robert Downey Jr.
\nPhoto:\n https://jsonformatter.org/img/Robert-Downey-Jr.jpg
\nBirthdate: 1965-4-4T00:12:34.000Z
\nBorn at: New York City, NY
\nWeight: 77.1
\nAge: 53
\nWife: Susan Downey
\nChildren: Indio Falconer, Avri Roel, Exton\n Elias
\nHas children: true
\nHas grey hair: false
\nName:\n Tom Cruise
\nPhoto:\n https://jsonformatter.org/img/tom-cruise.jpg
\nBirthdate:\n 1962-7-3T00:12:34.000Z
\nBorn at:\n Syracuse, NY
\nWeight:\n 67.5
\nAge:\n 56
\nWife:
\nChildren:\n Suri, Isabella Jane, Connor
\nHas children:\n true
\nHas grey hair:\n false
\nName:\n Robert Downey Jr.
\nPhoto:\n https://jsonformatter.org/img/Robert-Downey-Jr.jpg
\nBirthdate:\n 1965-4-4T00:12:34.000Z
\nBorn at:\n New York City, NY
\nWeight:\n 77.1
\nAge:\n 53
\nWife:\n Susan Downey
\nChildren:\n Indio Falconer, Avri Roel, Exton Elias
\nHas children:\n true
\nHas grey hair:\n false
\n