A Custom, Accessible Quiz

Laptop displaying a question from the custom quiz

A Custom, Accessible Quiz

Development Highlights

Originally Posted: Thursday, 3 January 2019

I recently developed a fully customized, yet accessible quiz for a client, and then decided to adapt the logic, pushing it a little farther to see what possibilities opened up for blending quizzes and knowledge checks more seamlessly into the storyline. With that goal in mind, I created a shorter, rewritten and rebranded version using a “Coffee to Go” storytelling theme (for clarity I’ll refer to this version as Quiz 2.0).

Since I first created it, I've brought Quiz 2.0 back to earth a little by:

  1. Weaving in facts about some of the key features within Adobe Captivate 2019 that support accessible e-learning;
  2. Providing a little information about the techniques I used to develop the course;
  3. Limiting my experiments with coffee and fictional coffee machines to the last three questions.

Therefore, in this article, I will focus on providing a very high-level overview of some key development decisions I made -- for anyone wishing to create something with similar functionality.

As is the case in most situations, there were constraints and requirements from the client that affected these decisions, and I’ll mention these where relevant.

Try the Quiz

I’ve posted the final Quiz 2.0 in my online portfolio

It will help to understand the rest of this article if you try out the quiz before reading further.

Multiple Introductions

Multiple text for introductions overlaid on a single slide

In the course, there are 2 possible scenarios in which a learner may start the quiz:

  • A first attempt;
  • Re-taking after a failed attempt.

For both scenarios, I used a single slide to communicate the introduction to the quiz. Structurally, this means that the quiz always starts from a single location. Through experience, I have learned that this simple decision will help to simplify any debugging that might be necessary later as it reduces the number of non-essential branches in the course.

To determine which scenario was in play, I used Captivate's cpQuizInfoAttempts system variable to track whether the quiz had previously been attempted. cpQuizInfoAttempts reports the number of times a quiz has been attempted; If the quiz has not yet been taken, its default value is zero.

Learn more about Captivate’s system variables at

The determineIntroTextMessage advanced action

To make setup this work, I assigned an advanced action to the On Enter event handler for the slide. Based on whether the quiz had already been attempted (or not), it determined which introduction message to display.

Custom Options

The highlighted True button for question 1 with it's Smart Shape properties visible in the Property Inspector

I created the custom options using Smart Shapes as buttons as this provided a lot of flexibility around their appearance. Each option has only two states: Normal and Visited.

In terms of accessibility, this was perhaps one of the trickier areas of the quiz because unlike regular buttons, Smart Shapes are not automatically accessible. It was, therefore, necessary to add Accessibility Names to each state.

Quizzing Logic

The shared action for a multiple choice, pick one quiz question.

The quiz contains accessible question-types exclusively: true or false, multiple-choice (pick one, and select all that apply) and fill-in-the-blanks. I created separate advanced actions to implement the logic for each of these question types, and then saved them as shared actions so that I could reuse the same advanced action for multiple questions containing similar objects.

In each question, every option has an advanced action associated with it which defines the following:

  • The score to assign to the option – 10 for the correct answer, 0 otherwise (in most cases. Select all that apply works a little differently).
  • Any options that must be deselected once this specific option is selected (for true or false and pick one question types).
  • The variable to update to indicate that at least one option has been selected --to indicate that it is time to enable the Submit button.

It is also worth mentioning that every question slide also has an On Enter advanced action attached to it that resets all the options to their Normal state and clears the score from the Submit button before the slide is displayed –-if the quiz is being retaken.

A Little Branching

The Branching view showing the branches from the Test Results slide.

As I mentioned earlier, through experience, I have learned that it is generally best to limit branching to only when necessary to achieve pedagogical objectives i.e. when distinct structural paths need to be defined. This situation fits that definition in that after the learner has completed the quiz, they are automatically directed along one of two distinct paths:

  • Pass the quiz and go to the course conclusion;
  • Fail the quiz and go back to the beginning of the quiz (to retake it).

So, this was a perfect situation to implement a little branching by creating a conditional advanced action which determined where to direct the learner based on the outcome of the quiz. It did this by determining which Next button and message group to display to the learner on the Quiz results slide.

Similar to the introduction, I used On Enter to attach the advanced action to the slide. This is the branch you can see in the image.