It looks like the final solution will have to run notebooks twice - once to check for errors and once more to render to documentation.
The concept of running code examples inside documentation as a part of tests is well known, and extending it to end-to-end tests / user guides is a good idea.
Next step might be to add hidden code cells with asserts, to check that the code not only runs, but creates the expected output.