Skip to content

Tutorial Runner

Barrie Byron edited this page Sep 7, 2023 · 14 revisions

The zkApp Tutorials at zkApp Tutorials use a tutorial runner to verify TypeScript code. See tutorial-runner.ts in GitHub.

The tutorial checker verifies the TypeScript code in code blocks:

  • Code fences for TypeScript require ts syntax and a valid filename `ts src/main.ts`
  • Code fences require a valid file path to the example .ts file
  • Code snippets must be valid TypeScript code
  • Line numbers and command prompts ($) are stripped by the copy-to-clipboard action present on the published doc
  • The zkApp CLI installation command in Tutorial 1 needs to execute to get things started.
  • The tutorial runner goes through the tutorial file (.mdx) and collects all code snippets, writes them into the specified file and executed scripts to run them
  • You can use comments to "hide" code from being rendered, while still allowing the tutorial runner to pick it up

The tutorial runner requires the zkApp CLI install command:

$ npm install -g zkapp-cli

For example:

image

To prevent the verification when you want to show generic TypeScript code blocks, like examples of using an API, use an ignore flag:

image

In addition to verifying the TypeScript code, the tutorial checker can also run shell commands and check for the returned status code to be successful:

  • Shell fences require a sh syntax
  • Shell snippets require a '$' before the command to tell the tutorial runner to run the command. (It will not verify the output).

For example:

image


To troubleshoot, you can run the tutorial runner locally by installing act and running the following command:

act --job=<tutorial>
# Run tutorial 1: act --job=hello-world

Until all of the current work is completed, the tutorial runner checks only the first tutorial, see the CI config: https://github.com/o1-labs/docs2/blob/aeeafe9f0fc5cea76cc82ff34a024eee6d1c21e2/.github/workflows/test-tutorials.yml#L19

The runner script provides some documentation at the top: https://github.com/o1-labs/docs2/blob/5ef5ad27673af2de555c5c938bd0d8f93bdd73b8/scripts/tutorial-runner.ts

Clone this wiki locally