diff --git a/package.json b/package.json index 4a4c43766155..81b7912b76c4 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "prettier": "1.19.1", "react": "16.10.2", "react-dom": "16.10.2", - "react-ssr-prepass": "1.0.7", + "react-ssr-prepass": "1.0.8", "release": "6.0.1", "request-promise-core": "1.1.2", "rimraf": "2.6.3", diff --git a/packages/next/build/entries.ts b/packages/next/build/entries.ts index ccbebdbc7362..f51675d36655 100644 --- a/packages/next/build/entries.ts +++ b/packages/next/build/entries.ts @@ -75,7 +75,6 @@ export function createEntrypoints( buildId, assetPrefix: config.assetPrefix, generateEtags: config.generateEtags, - ampBindInitData: config.experimental.ampBindInitData, canonicalBase: config.canonicalBase, basePath: config.experimental.basePath, } diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index 75a113a6ec00..817efd300d56 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -445,21 +445,6 @@ export default async function getBaseWebpackConfig( try { res = resolveRequest(request, `${context}/`) } catch (err) { - // This is a special case for the Next.js data experiment. This - // will be removed in the future. - // We're telling webpack to externalize a package that doesn't - // exist because we know it won't ever be used at runtime. - if ( - request === 'react-ssr-prepass' && - !config.experimental.ampBindInitData - ) { - if ( - context.replace(/\\/g, '/').includes('next-server/server') - ) { - return callback(undefined, `commonjs ${request}`) - } - } - // If the request cannot be resolved, we need to tell webpack to // "bundle" it so that webpack shows an error (that it cannot be // resolved). @@ -520,19 +505,6 @@ export default async function getBaseWebpackConfig( // When the 'serverless' target is used all node_modules will be compiled into the output bundles // So that the 'serverless' bundles have 0 runtime dependencies '@ampproject/toolbox-optimizer', // except this one - (context, request, callback) => { - if ( - request === 'react-ssr-prepass' && - !config.experimental.ampBindInitData - ) { - // if it's the Next.js' require mark it as external - // since it's not used - if (context.replace(/\\/g, '/').includes('next-server/server')) { - return callback(undefined, `commonjs ${request}`) - } - } - return callback() - }, ], optimization: { checkWasmTypes: false, @@ -868,7 +840,6 @@ export default async function getBaseWebpackConfig( isDevelopment: dev, isServer, hasSupportCss: !!config.experimental.css, - hasExperimentalData: !!config.experimental.ampBindInitData, assetPrefix: config.assetPrefix || '', }) diff --git a/packages/next/build/webpack/config/blocks/experiment-data.ts b/packages/next/build/webpack/config/blocks/experiment-data.ts deleted file mode 100644 index b86c49852784..000000000000 --- a/packages/next/build/webpack/config/blocks/experiment-data.ts +++ /dev/null @@ -1,28 +0,0 @@ -import curry from 'lodash.curry' -import path from 'path' -import { Configuration } from 'webpack' -import { unshiftLoader } from '../helpers' -import { ConfigurationContext, pipe } from '../utils' - -export const experimentData = curry(function experimentData( - enabled: boolean, - ctx: ConfigurationContext, - config: Configuration -) { - if (!enabled) { - return config - } - - if (ctx.isServer) { - return config - } - - const fn = pipe( - unshiftLoader({ - test: /\.(tsx|ts|js|mjs|jsx)$/, - include: [path.join(ctx.rootDirectory, 'data')], - use: 'next-data-loader', - }) - ) - return fn(config) -}) diff --git a/packages/next/build/webpack/config/index.ts b/packages/next/build/webpack/config/index.ts index ca3508f1bc94..3d60123601e4 100644 --- a/packages/next/build/webpack/config/index.ts +++ b/packages/next/build/webpack/config/index.ts @@ -2,7 +2,6 @@ import webpack from 'webpack' import { base } from './blocks/base' import { css } from './blocks/css' import { ConfigurationContext, pipe } from './utils' -import { experimentData } from './blocks/experiment-data' export async function build( config: webpack.Configuration, @@ -12,7 +11,6 @@ export async function build( isDevelopment, isServer, hasSupportCss, - hasExperimentalData, assetPrefix, }: { rootDirectory: string @@ -20,7 +18,6 @@ export async function build( isDevelopment: boolean isServer: boolean hasSupportCss: boolean - hasExperimentalData: boolean assetPrefix: string } ): Promise { @@ -38,10 +35,6 @@ export async function build( : '', } - const fn = pipe( - base(ctx), - experimentData(hasExperimentalData, ctx), - css(hasSupportCss, ctx) - ) + const fn = pipe(base(ctx), css(hasSupportCss, ctx)) return fn(config) } diff --git a/packages/next/build/webpack/loaders/next-serverless-loader.ts b/packages/next/build/webpack/loaders/next-serverless-loader.ts index 0b645f8c23cf..fdc47e8fde56 100644 --- a/packages/next/build/webpack/loaders/next-serverless-loader.ts +++ b/packages/next/build/webpack/loaders/next-serverless-loader.ts @@ -18,7 +18,6 @@ export type ServerlessLoaderQuery = { absoluteErrorPath: string buildId: string assetPrefix: string - ampBindInitData: boolean | string generateEtags: string canonicalBase: string basePath: string @@ -32,7 +31,6 @@ const nextServerlessLoader: loader.Loader = function() { buildId, canonicalBase, assetPrefix, - ampBindInitData, absoluteAppPath, absoluteDocumentPath, absoluteErrorPath, @@ -213,8 +211,6 @@ const nextServerlessLoader: loader.Loader = function() { canonicalBase: "${canonicalBase}", buildId: "${buildId}", assetPrefix: "${assetPrefix}", - ampBindInitData: ${ampBindInitData === true || - ampBindInitData === 'true'}, ..._renderOpts } let sprData = false @@ -231,7 +227,6 @@ const nextServerlessLoader: loader.Loader = function() { { Component, pageConfig: config, - dataOnly: req.headers && (req.headers.accept || '').indexOf('application/amp.bind+json') !== -1, nextExport: fromExport }, options, diff --git a/packages/next/client/index.js b/packages/next/client/index.js index f2dfae47d4c1..cb4a3e539023 100644 --- a/packages/next/client/index.js +++ b/packages/next/client/index.js @@ -12,9 +12,7 @@ import { import PageLoader from './page-loader' import * as envConfig from '../next-server/lib/runtime-config' import { HeadManagerContext } from '../next-server/lib/head-manager-context' -import { DataManagerContext } from '../next-server/lib/data-manager-context' import { RouterContext } from '../next-server/lib/router-context' -import { DataManager } from '../next-server/lib/data-manager' import { parse as parseQs, stringify as stringifyQs } from 'querystring' import { isDynamicRoute } from '../next-server/lib/router/utils/is-dynamic' @@ -45,9 +43,6 @@ const { dynamicIds, } = data -const d = JSON.parse(window.__NEXT_DATA__.dataManager) -export const dataManager = new DataManager(d) - const prefix = assetPrefix || '' // With dynamic assetPrefix it's no longer possible to set assetPrefix at the build time @@ -384,11 +379,9 @@ function AppContainer({ children }) { } > - - - {children} - - + + {children} + ) diff --git a/packages/next/client/page-loader.js b/packages/next/client/page-loader.js index 1fe7af28a44e..0a5cfba1df44 100644 --- a/packages/next/client/page-loader.js +++ b/packages/next/client/page-loader.js @@ -18,6 +18,16 @@ const relPrefetch = const hasNoModule = 'noModule' in document.createElement('script') +function normalizeRoute(route) { + if (route[0] !== '/') { + throw new Error(`Route name should start with a "/", got "${route}"`) + } + route = route.replace(/\/index$/, '/') + + if (route === '/') return route + return route.replace(/\/$/, '') +} + function appendLink(href, rel, as) { return new Promise((res, rej, link) => { link = document.createElement('link') @@ -63,22 +73,12 @@ export default class PageLoader { ) } - normalizeRoute(route) { - if (route[0] !== '/') { - throw new Error(`Route name should start with a "/", got "${route}"`) - } - route = route.replace(/\/index$/, '/') - - if (route === '/') return route - return route.replace(/\/$/, '') - } - loadPage(route) { return this.loadPageScript(route).then(v => v.page) } loadPageScript(route) { - route = this.normalizeRoute(route) + route = normalizeRoute(route) return new Promise((resolve, reject) => { const fire = ({ error, page, mod }) => { @@ -139,8 +139,8 @@ export default class PageLoader { }) } - async loadRoute(route) { - route = this.normalizeRoute(route) + loadRoute(route) { + route = normalizeRoute(route) let scriptRoute = route === '/' ? '/index.js' : `${route}.js` const url = `${this.assetPrefix}/_next/static/${encodeURIComponent( @@ -203,20 +203,20 @@ export default class PageLoader { register() } - async prefetch(route, isDependency) { + prefetch(route, isDependency) { // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118 // License: Apache 2.0 let cn if ((cn = navigator.connection)) { // Don't prefetch if using 2G or if Save-Data is enabled. - if (cn.saveData || /2g/.test(cn.effectiveType)) return + if (cn.saveData || /2g/.test(cn.effectiveType)) return Promise.resolve() } let url = this.assetPrefix if (isDependency) { url += route } else { - route = this.normalizeRoute(route) + route = normalizeRoute(route) this.prefetched[route] = true let scriptRoute = `${route === '/' ? '/index' : route}.js` @@ -229,22 +229,24 @@ export default class PageLoader { )}/pages${encodeURI(scriptRoute)}` } - if ( + return Promise.all( document.querySelector( `link[rel="${relPrefetch}"][href^="${url}"], script[data-next-page="${route}"]` ) - ) { - return - } - - return Promise.all([ - appendLink(url, relPrefetch, url.match(/\.css$/) ? 'style' : 'script'), - process.env.__NEXT_GRANULAR_CHUNKS && - !isDependency && - this.getDependencies(route).then(urls => - Promise.all(urls.map(url => this.prefetch(url, true))) - ), - ]).then( + ? [] + : [ + appendLink( + url, + relPrefetch, + url.match(/\.css$/) ? 'style' : 'script' + ), + process.env.__NEXT_GRANULAR_CHUNKS && + !isDependency && + this.getDependencies(route).then(urls => + Promise.all(urls.map(url => this.prefetch(url, true))) + ), + ] + ).then( // do not return any data () => {}, // swallow prefetch errors diff --git a/packages/next/lib/data.ts b/packages/next/lib/data.ts deleted file mode 100644 index f2b4b0523607..000000000000 --- a/packages/next/lib/data.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { useContext } from 'react' -import { DataManagerContext } from '../next-server/lib/data-manager-context' -import { RouterContext } from '../next-server/lib/router-context' -import fetch from 'unfetch' -import { stringify } from 'querystring' - -type Args = string | number | Array - -function generateArgsKey(args: Args[]) { - return args.reduce((a: string, b: Args): string => { - if (Array.isArray(b)) { - return a + generateArgsKey(b) - } - if (typeof b !== 'string' && typeof b !== 'number') { - throw new Error('arguments can only be string or number') - } - return a + b.toString() - }, '') -} - -export function createHook( - fetcher: (...args: Args[]) => Promise, - options: { key: string } -) { - if (!options.key) { - throw new Error('key not provided to createHook options.') - } - return function useData(...args: Array) { - const router: import('../next-server/lib/router/router').NextRouter = useContext( - RouterContext - ) - const dataManager: import('../next-server/lib/data-manager').DataManager = useContext( - DataManagerContext - ) - const key = `${options.key}${generateArgsKey(args)}` - const existing = dataManager.get(key) - - if (existing) { - if (existing.status === 'resolved') { - return existing.result - } - if (existing === 'mismatched-key') { - throw new Error( - 'matching key was missing from returned data. make sure arguments match between the client and server' - ) - } - } - - // @ts-ignore webpack optimization - if (typeof window !== 'undefined') { - const res = fetch(router.route + '?' + stringify(router.query), { - headers: { - accept: 'application/amp.bind+json', - }, - }) - .then((res: any) => res.json()) - .then((result: any) => { - const hasKey = result.some((pair: [string, any]) => pair[0] === key) - if (!hasKey) { - result = [[key, 'mismatched-key']] - } - dataManager.overwrite(result) - }) - throw res - } else { - const res = fetcher(...args).then(result => { - dataManager.set(key, { - status: 'resolved', - result, - }) - }) - throw res - } - } -} diff --git a/packages/next/next-server/lib/data-manager-context.ts b/packages/next/next-server/lib/data-manager-context.ts deleted file mode 100644 index 23e78c3cbbfd..000000000000 --- a/packages/next/next-server/lib/data-manager-context.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as React from 'react' - -export const DataManagerContext: React.Context = React.createContext(null) diff --git a/packages/next/next-server/lib/data-manager.ts b/packages/next/next-server/lib/data-manager.ts deleted file mode 100644 index 9de0fd4c3137..000000000000 --- a/packages/next/next-server/lib/data-manager.ts +++ /dev/null @@ -1,21 +0,0 @@ -export class DataManager { - data: Map - constructor(data?: any) { - this.data = new Map(data) - } - - getData() { - return this.data - } - - get(key: string) { - return this.data.get(key) - } - - set(key: string, value: any) { - this.data.set(key, value) - } - overwrite(data: any) { - this.data = new Map(data) - } -} diff --git a/packages/next/next-server/lib/utils.ts b/packages/next/next-server/lib/utils.ts index 8e0b10623b07..4a54d8b3cd37 100644 --- a/packages/next/next-server/lib/utils.ts +++ b/packages/next/next-server/lib/utils.ts @@ -56,7 +56,6 @@ export type ComponentsEnhancer = export type RenderPageResult = { html: string head?: Array - dataOnly?: true } export type RenderPage = ( @@ -69,7 +68,6 @@ export type BaseContext = { } export type NEXT_DATA = { - dataManager: string props: any page: string query: ParsedUrlQuery diff --git a/packages/next/next-server/server/config.ts b/packages/next/next-server/server/config.ts index 4b61b29701e2..d9282ffd2d6c 100644 --- a/packages/next/next-server/server/config.ts +++ b/packages/next/next-server/server/config.ts @@ -36,7 +36,6 @@ const defaultConfig: { [key: string]: any } = { }, exportTrailingSlash: false, experimental: { - ampBindInitData: false, cpus: Math.max( 1, (Number(process.env.CIRCLE_NODE_TOTAL) || diff --git a/packages/next/next-server/server/next-server.ts b/packages/next/next-server/server/next-server.ts index 03c42f9e5f28..444173b53ea0 100644 --- a/packages/next/next-server/server/next-server.ts +++ b/packages/next/next-server/server/next-server.ts @@ -92,7 +92,6 @@ export default class Server { buildId: string renderOpts: { poweredByHeader: boolean - ampBindInitData: boolean staticMarkup: boolean buildId: string generateEtags: boolean @@ -141,7 +140,6 @@ export default class Server { this.buildId = this.readBuildId() this.renderOpts = { - ampBindInitData: this.nextConfig.experimental.ampBindInitData, poweredByHeader: this.nextConfig.poweredByHeader, canonicalBase: this.nextConfig.amp.canonicalBase, documentMiddlewareEnabled: this.nextConfig.experimental @@ -743,13 +741,7 @@ export default class Server { return this.render404(req, res, parsedUrl) } - const html = await this.renderToHTML(req, res, pathname, query, { - dataOnly: - (this.renderOpts.ampBindInitData && Boolean(query.dataOnly)) || - (req.headers && - (req.headers.accept || '').indexOf('application/amp.bind+json') !== - -1), - }) + const html = await this.renderToHTML(req, res, pathname, query, {}) // Request was ended by the user if (html === null) { return @@ -952,12 +944,10 @@ export default class Server { query: ParsedUrlQuery = {}, { amphtml, - dataOnly, hasAmp, }: { amphtml?: boolean hasAmp?: boolean - dataOnly?: boolean } = {} ): Promise { return this.findPageComponents(pathname, query) @@ -971,7 +961,7 @@ export default class Server { ? { _nextSprData: query._nextSprData } : query, result, - { ...this.renderOpts, amphtml, hasAmp, dataOnly } + { ...this.renderOpts, amphtml, hasAmp } ) }, err => { @@ -1003,7 +993,6 @@ export default class Server { ...this.renderOpts, amphtml, hasAmp, - dataOnly, } ) } diff --git a/packages/next/next-server/server/render.tsx b/packages/next/next-server/server/render.tsx index 2d36fd87d4d0..aebb107c555c 100644 --- a/packages/next/next-server/server/render.tsx +++ b/packages/next/next-server/server/render.tsx @@ -19,10 +19,8 @@ import { import Head, { defaultHead } from '../lib/head' // @ts-ignore types will be added later as it's an internal module import Loadable from '../lib/loadable' -import { DataManagerContext } from '../lib/data-manager-context' import { LoadableContext } from '../lib/loadable-context' import { RouterContext } from '../lib/router-context' -import { DataManager } from '../lib/data-manager' import { getPageFiles, BuildManifest } from './get-page-files' import { AmpStateContext } from '../lib/amp-context' import optimizeAmp from './optimize-amp' @@ -126,7 +124,6 @@ function render( type RenderOpts = { documentMiddlewareEnabled: boolean - ampBindInitData: boolean staticMarkup: boolean buildId: string canonicalBase: string @@ -140,7 +137,6 @@ type RenderOpts = { dev?: boolean ampMode?: any ampPath?: string - dataOnly?: boolean inAmpMode?: boolean hybridAmp?: boolean buildManifest: BuildManifest @@ -164,7 +160,6 @@ type RenderOpts = { function renderDocument( Document: DocumentType, { - dataManagerData, props, docProps, pathname, @@ -193,7 +188,6 @@ function renderDocument( bodyTags, headTags, }: RenderOpts & { - dataManagerData: string props: any docProps: DocumentInitialProps pathname: string @@ -219,7 +213,6 @@ function renderDocument( {Document.renderDocument(Document, { __NEXT_DATA__: { - dataManager: dataManagerData, props, // The result of getInitialProps page: pathname, // The rendered page query, // querystring parsed / passed by the user @@ -267,7 +260,6 @@ export async function renderToHTML( err, dev = false, documentMiddlewareEnabled = false, - ampBindInitData = false, staticMarkup = false, ampPath = '', App, @@ -399,11 +391,6 @@ export async function renderToHTML( await DocumentMiddleware(ctx) } - let dataManager: DataManager | undefined - if (ampBindInitData) { - dataManager = new DataManager() - } - const ampState = { ampFirst: pageConfig.amp === true, hasQuery: Boolean(query.amp), @@ -414,15 +401,13 @@ export async function renderToHTML( const AppContainer = ({ children }: any) => ( - - - reactLoadableModules.push(moduleName)} - > - {children} - - - + + reactLoadableModules.push(moduleName)} + > + {children} + + ) @@ -525,87 +510,30 @@ export async function renderToHTML( } } - let renderPage: RenderPage - - if (ampBindInitData) { - const ssrPrepass = require('react-ssr-prepass') - - renderPage = async ( - options: ComponentsEnhancer = {} - ): Promise<{ html: string; head: any; dataOnly?: true }> => { - const renderError = renderPageError() - if (renderError) return renderError - - const { - App: EnhancedApp, - Component: EnhancedComponent, - } = enhanceComponents(options, App, Component) + let renderPage: RenderPage = ( + options: ComponentsEnhancer = {} + ): { html: string; head: any } => { + const renderError = renderPageError() + if (renderError) return renderError - const Application = () => ( - - - - ) - - const element = - - try { - return render(renderElementToString, element, ampState) - } catch (err) { - if (err && typeof err === 'object' && typeof err.then === 'function') { - await ssrPrepass(element) - if (renderOpts.dataOnly) { - return { - html: '', - head: [], - dataOnly: true, - } - } else { - return render(renderElementToString, element, ampState) - } - } - throw err - } - } - } else { - renderPage = ( - options: ComponentsEnhancer = {} - ): { html: string; head: any } => { - const renderError = renderPageError() - if (renderError) return renderError - - const { - App: EnhancedApp, - Component: EnhancedComponent, - } = enhanceComponents(options, App, Component) + const { + App: EnhancedApp, + Component: EnhancedComponent, + } = enhanceComponents(options, App, Component) - return render( - renderElementToString, - - - , - ampState - ) - } + return render( + renderElementToString, + + + , + ampState + ) } const documentCtx = { ...ctx, renderPage } const docProps = await loadGetInitialProps(Document, documentCtx) // the response might be finished on the getInitialProps call if (isResSent(res) && !isSpr) return null - let dataManagerData = '[]' - if (dataManager) { - dataManagerData = JSON.stringify([...dataManager.getData()]) - } - if (!docProps || typeof docProps.html !== 'string') { const message = `"${getDisplayName( Document @@ -613,10 +541,6 @@ export async function renderToHTML( throw new Error(message) } - if (docProps.dataOnly) { - return dataManagerData - } - const dynamicImportIdsSet = new Set() const dynamicImports: ManifestItem[] = [] @@ -642,7 +566,6 @@ export async function renderToHTML( let html = renderDocument(Document, { ...renderOpts, dangerousAsPath: router.asPath, - dataManagerData, ampState, props, headTags: await headTags(documentCtx), diff --git a/packages/next/pages/_document.tsx b/packages/next/pages/_document.tsx index 1d08fbf966ef..8cb6a1dfeafb 100644 --- a/packages/next/pages/_document.tsx +++ b/packages/next/pages/_document.tsx @@ -93,7 +93,7 @@ export default class Document

extends Component { return (props: any) => } - const { html, head, dataOnly } = await ctx.renderPage({ enhanceApp }) + const { html, head } = await ctx.renderPage({ enhanceApp }) const styles = [ ...flush(), ...(process.env.__NEXT_PLUGINS @@ -103,7 +103,7 @@ export default class Document

extends Component { ).then(mod => mod.default(ctx)) : []), ] - return { html, head, styles, dataOnly } + return { html, head, styles } } static renderDocument

( diff --git a/test/integration/data/data/get-uptime.js b/test/integration/data/data/get-uptime.js deleted file mode 100644 index d1b8c6bb8b94..000000000000 --- a/test/integration/data/data/get-uptime.js +++ /dev/null @@ -1,6 +0,0 @@ -import { createHook } from 'next/data' -import os from 'os' - -export default createHook(async () => { - return os.uptime() -}) diff --git a/test/integration/data/next.config.js b/test/integration/data/next.config.js deleted file mode 100644 index f5c9985ac71b..000000000000 --- a/test/integration/data/next.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - experimental: { - ampBindInitData: true, - }, -} diff --git a/test/integration/data/pages/_app.js b/test/integration/data/pages/_app.js deleted file mode 100644 index dddf3c92faed..000000000000 --- a/test/integration/data/pages/_app.js +++ /dev/null @@ -1,19 +0,0 @@ -import React, { Suspense } from 'react' -import App from 'next/app' - -class MyApp extends App { - render() { - const { Component, pageProps } = this.props - if (typeof window === 'undefined') { - return - } - - return ( - Loading...}> - - - ) - } -} - -export default MyApp diff --git a/test/integration/data/pages/about.js b/test/integration/data/pages/about.js deleted file mode 100644 index c58e1856c37e..000000000000 --- a/test/integration/data/pages/about.js +++ /dev/null @@ -1,9 +0,0 @@ -import Link from 'next/link' - -export default () => { - return ( - - home - - ) -} diff --git a/test/integration/data/pages/index.js b/test/integration/data/pages/index.js deleted file mode 100644 index cbc869148974..000000000000 --- a/test/integration/data/pages/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import getUptime from '../data/get-uptime' - -export default function Index() { - const uptime = getUptime() - return

The uptime of the server is {uptime}

-} diff --git a/test/integration/data/test/index.test.js b/test/integration/data/test/index.test.js deleted file mode 100644 index 323921172b2b..000000000000 --- a/test/integration/data/test/index.test.js +++ /dev/null @@ -1,58 +0,0 @@ -/* eslint-env jest */ -/* global jasmine */ -import { join } from 'path' -import webdriver from 'next-webdriver' -import { - killApp, - findPort, - launchApp, - fetchViaHTTP, - renderViaHTTP, -} from 'next-test-utils' - -const appDir = join(__dirname, '../') -let appPort -let server -jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 60 * 2 - -describe.skip('AMP Bind Initial Data', () => { - beforeAll(async () => { - appPort = await findPort() - server = await launchApp(appDir, appPort) - }) - afterAll(() => killApp(server)) - - it('responds with json with accept header on page', async () => { - const data = await fetchViaHTTP(appPort, '/', null, { - headers: { - accept: 'application/amp.bind+json', - }, - }).then(res => res.ok && res.text()) - - let isJSON = false - try { - JSON.parse(data) - isJSON = true - } catch (_) {} - expect(isJSON).toBe(true) - }) - - it('renders the data during SSR', async () => { - const html = await renderViaHTTP(appPort, '/') - expect(html).toMatch(/The uptime of the server is.*?\d.*?\d/) - }) - - it('renders a page without data', async () => { - const html = await renderViaHTTP(appPort, '/about') - expect(html).toMatch(/ { - const browser = await webdriver(appPort, '/about') - await browser.elementByCss('a').click() - await browser.waitForElementByCss('h1') - const h1Text = await browser.elementByCss('h1').text() - expect(h1Text).toMatch(/The uptime of the server is.*?\d.*?\d/) - await browser.close() - }) -}) diff --git a/test/integration/size-limit/test/index.test.js b/test/integration/size-limit/test/index.test.js index a4e986d5265f..d175c19c7365 100644 --- a/test/integration/size-limit/test/index.test.js +++ b/test/integration/size-limit/test/index.test.js @@ -81,7 +81,7 @@ describe('Production response size', () => { ) // These numbers are without gzip compression! - const delta = responseSizeKilobytes - 234 + const delta = responseSizeKilobytes - 230 expect(delta).toBeLessThanOrEqual(0) // don't increase size expect(delta).toBeGreaterThanOrEqual(-1) // don't decrease size without updating target }) @@ -101,7 +101,7 @@ describe('Production response size', () => { ) // These numbers are without gzip compression! - const delta = responseSizeKilobytes - 202 + const delta = responseSizeKilobytes - 198 expect(delta).toBeLessThanOrEqual(0) // don't increase size expect(delta).toBeGreaterThanOrEqual(-1) // don't decrease size without updating target }) diff --git a/yarn.lock b/yarn.lock index 0804294daf96..158de0aa90bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12815,10 +12815,10 @@ react-is@16.8.6, react-is@^16.8.1, react-is@^16.8.4: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== -react-ssr-prepass@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/react-ssr-prepass/-/react-ssr-prepass-1.0.7.tgz#6b6fac5b4d3a8f10e6a45f33798c7cdf7a164eeb" - integrity sha512-DnXVwgytL+9UvAMnotUKW3GlksFgqOegsGOQjUI2v31pkbJBUunBvnOoNu2tNr4KRdxL5X8l66sAW5/1wSRiQw== +react-ssr-prepass@1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/react-ssr-prepass/-/react-ssr-prepass-1.0.8.tgz#036abffe541975b20213cf7b261c05ac2843480d" + integrity sha512-O0gfRA1SaK+9ITKxqfnXsej2jF+OHGP/+GxD4unROQaM/0/UczGF9fuF+wTboxaQoKdIf4FvS3h/OigWh704VA== dependencies: object-is "^1.0.1"