Skip to content
master
Switch branches/tags
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Build Gitter

Abitti.dev

Abitti.dev

Use of Abitti Trademark policy

Documentation

Engine for the MEX exam format.

Provides:

  • Exam preview tools for exam developers
  • MEX format documentation
  • Tools for mastering an exam to run it in Matriculation examination board's environment

Make sure you test any MEX format exam manually before publishing it or using it with Abitti in production. This manual testing should include holding the exam, answering all questions, grading it, and checking that all examinees' answers are available.

The MEX format and this engine is still under development: All functionalities of the MEX format do not yet work in Abitti. Breaking changes are also still possible without prior warning.

Setup

Make sure the following are installed in your system:

After Node.js has been installed, open a new terminal window and type the following command.

$ npm install -g @digabi/exam-engine-cli

This installs the ee command-line program to your system.

Creating a new exam

To create a new exam, use

$ ee new Esimerkkikoe

This creates a Esimerkkikoe directory, containing a basic exam.xml file and an empty attachments directory where to place attachments.

Preview

To start a live preview of any exam on your computer, navigate to the exam directory and run

$ ee preview

Importing an exam to Abitti

To use an exam in Abitti, it must be first packaged as a transfer zip. It is then possible to import it to Abitti by clicking "Tuo koe/För in prov".

To create a transfer zip, navigate to the exam directory and run

$ ee create-transfer-zip

This creates a transfer zip files in the exam directory for each language version of the exam.

Offline versions

Offline version refers to a static version of an exam that can be viewed in a web browser without any additional tools.

To create an offline version of the exam, navigate to the exam directory and use

$ ee create-offline

Intellectual property rights

Most of the artifacts in this repository are licensed under LICENSE. Exceptions are:

Development

The information in this section is only relevant for developers.

Architecture

Exam-engine is structured as a a monorepo that containing several NPM packages.

Component Purpose
@digabi/exam-engine-core The main UI code responsible for rendering a mastered exam into HTML. It produces an AMD bundle containing several React components and a CSS file. This AMD bundle packaged to every exam .mex file and loaded dynamically when taking the exam.
@digabi/exam-engine-mastering Mastering is a step in which we take a source XML file, validate its contents, do some processing (e.g. calculate the maximum score and assign IDs for each question). A single source XML file will produce a separate mastered XML files for each language defined in the source XML.
@digabi/exam-engine-packaging Packages the mastered exam XML and possible attachments to an encrypted .mex file. This file can be loaded by the exam server.
@digabi/exam-engine-rendering Contains webpack-related code for previewing an exam or converting one into a static HTML file (also known as an "offline exam").
@digabi/exam-engine-exams Contains sample exams in the mex format.
@digabi/exam-engine-cli Contains the ee CLI tool.

Preview

The ee client can be run with yarn ee. So to preview an exam, run

$ yarn ee preview path/to/exam.xml

Compilation

Before doing any changes to the code, you'll want to command TypeScript to compile any changes within the whole project automatically.

$ yarn watch

Lint

$ yarn lint

Tests

To run all tests

$ yarn test

To run a specific test or a specific set of tests, use

$ yarn test packages/foo/__tests__/testFoo.ts
$ yarn test packages/foo

If you've made changes to the code that affect exam mastering or rendering, you need to update the test snapshots by running. Review changes the snapshots manually.

$ yarn test -u

Travis CI runs tests on all branches and pull requests in https://travis-ci.org/digabi/exam-engine

NPM releases

First, login to npm using:

$ npm login

When publishing a prerelease, use:

$ ANSWERS_PRIVATE_KEY=/absolute/path/to/answers-private-key.pem yarn lerna publish --dist-tag next

With official releases you need to skip the dist-tag parameter:

$ ANSWERS_PRIVATE_KEY=/absolute/path/to/answers-private-key.pem yarn lerna publish

The commands prompt you for details about the release: just running them does not publish anything yet.