Static GitHub Issues

[3302] Add nuxt.renderRequest()

prev: Nuxt is the best framework in the world. lightweight, fully customizable, very powerful. I love it.
next: Pass `context` instead of `context.nuxt` at `render:context` hook

What problem does this feature solve?

I want to test the state data passed from server to client. nuxt.renderRoute() does not execute serverMiddleware. nuxtServerInit does not get request data by argument in nuxt.renderRoute().

What does the proposed changes look like?

nuxt.renderRequest() executes serverMiddleware. nuxtServerInit can get request data by argument in nuxt.renderRequest().

const { Nuxt, Builder } = require('nuxt')
const config = require('../nuxt.test.config.js')
const expect = require('chai').expect
config.dev = false
describe('Server side state', function() {
  let nuxt;
  this.timeout(30000);
  before(async function() {
    nuxt = new Nuxt(config)
    await new Builder(nuxt).build()
  })
  it('/', async function() {
    let req = { 
      method: 'get'
      path: '/',
      header: {}, 
      data: {}
    }
    let result = await nuxt.renderRequest(req)
    expect(result.context.state).to.deep.equal({ user: '12345678901234567890' })
  });
  it('/abc', async function() {
    let req = { 
      method: 'get'
      path: '/abc',
      header: {}, 
      data: {}
    }
    let result = await nuxt.renderRequest('/abc')
    expect(result.context.state).to.deep.equal({ user: 'abc' })
  });
});
<!--cmty--><!--cmty_prevent_hook--><div align="right"><sub><em>This feature request is available on <a href="https://nuxtjs.cmty.io">Nuxt.js</a> community (<a href="https://nuxtjs.cmty.io/nuxt/nuxt.js/issues/c7024">#c7024</a>)</em></sub></div>