Skip to content
js13kGames automatic submission validation
TypeScript JavaScript HTML
Branch: master
Clone or download
Latest commit 3bc9d7c Sep 12, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci feat: remove process-all Sep 5, 2019
doc doc: update image ratio rule Aug 26, 2019
src fix: fix deprecation warnings Sep 12, 2019
.env feat: add file transform service with cloudinary Jul 24, 2019
.gitignore feat: deploy script Jul 23, 2019
.nvmrc feat: add a circle ci step to re-do all the analyzes Sep 5, 2019 doc: change urls Jul 25, 2019
babel.config.js feat: add circle config Jul 23, 2019
jest.config.js fix: add object.fromEntries polyfill Jul 23, 2019
package.json feat: bump octokit rest ; drop unmaintened github-app Sep 12, 2019
tsconfig.json feat: init Jul 23, 2019
yarn.lock feat: bump octokit rest ; drop unmaintened github-app Sep 12, 2019

js13kGames bot

screenshot of pull request comment section

code style: prettier type: typescript build status

js13kGames automatic submission validation

In order to automate submission for the challenge, the whole submission process is based on github Pull Request with a bot to check trivial things.

Table of content



If you want to submit an entry to the, have a look at the How to submit

Internal Workflow

The section describes the internal implementation.

⚠️ Knowledge on this is not required to submit your entry !


This project is a github app. It leverages octokit/rest to collect information.

Some artefacts are made publicly available throught a aws s3 bucket.

In order to test trivial issues, the game is run headlessly with browserstack.


Unfortunately since the release is on the submitter fork, and not part of the pull request, we cannot not have hook to trigger a check.

Which means we fallback on polling every X minutes.


The app does not rely on database.

However it is able to pull previous work from the pull request comment and avoid doing the work more than once.


  • The job start for a pull request (from cron or from manual trigger)

  • The bot get the latest release linked to the branch on the PR

  • It check if a check run exists for the release (the check run is bound to the release commit sha and the release id). If so, stop here

  • Else start the analysis:

    • Get the assets attached to the release

    • Look for a .zip

    • Check the size ( must be < 13k )

    • Unzip it

    • Look for an index.html

    • Upload the content of the zip

    • Run the game in browserstack

    • Look for errors in the console

    • Look for external http call ( which is forbidden )

    • Take a screenshot and determine if the screen is blank ( which probably means something is broken)

  • Report the analysis as check run for the release commit

  • Report the analysis as comment of the PR


PRs and issues welcome!

Join the to discuss new features!


This project uses typescript and prettier with default config.

Check type consistency with yarn type and linting with yarn lint


Run integration test with yarn test

It will run the bot against this pull requests samples.

You will need to have the env configured.


The app is backed by aws lambda. Using serverless to handle the deploy thingy.

yarn deploy will build the sources, package and deploy the bundle.

You will need to have the env configured, and serverless configured to target aws as well.



You can’t perform that action at this time.