Monday, December 13, 2021

contentEditable

html editor

many buttons, executeStuff is now deprecated

tags, grid

Google Docs opted out, they now have it completely operated by  custom JavaScript. From what I understood, their main driving force was to show carets of your collaborators alongside yours.

Monday, December 6, 2021

Extending Tutorial System

During improvements of the Tutorial System it occurred to me there are several other interesting use cases for it:

Presentation

It's common knowledge – if something would break, it will happen during a presentation. Using a tutorial would be way to automate it and test everything before presentation. For me it's much more honest, than just putting screenshots in PowerPoint.

With Tutorial System you can automate clicking, highlighting, form interactions and module loads, it can wait for you to talk about it and then press any key to continue – like you would in a slideshow.

Test cases

The scripting system for a tutorial remotely resembles a user task list in a test case. Therefore using the same instructions I'm able to generate test cases in a CSV file for Microsoft Excel, which browser automatically downloads. User then just notes, if the system provided expected results.

Because the script could be defined as array of strings directly in the source code (as oppose to loaded from an external JSON file), you can use variables there and e. g. randomize things for different users.

Remote support

The tutorial script isn't the only thing that could control the virtual cursor. Using WebSockets or Web Workers it can receive instructions from a remote user, such as tech support operator.

This nicely goes hand in hand with my error reporting feature, which has similar requirements for having as similar environments as possible.

The major drawback for this application is the operator don't actually see, what user have on screen, so (s)he relies only on what the system generates. Using different browser, different resolution or different version may not work properly. It would require major checks, if everything is the same.

Interactive Webinar

It's a cross between Presentation and Remote support. Unlike video webinar, this one adds interactivity, where participants can continue where the lecturer left off, or finish the task.

Lecturer can either use 3rd party solution to transmit the voice, or use TTS with pre-written sentences. Because no video is transmitted, requirements for a bandwidth are much lower and the end-result is much more crisper.

Automated UI testing

I improved the timer code to support zero delay, so it goes through the script as fast as possible. For practical reasons it also disables all the speech and sounds, and I added better error handling in this mode.