How do I input OTP value in protected pages using Pa11y.js?

103 Views Asked by At

Is it possible to manually input one time password in Pa11y console?

I'm running my pa11y.js code using Node console. I'm running into issues how to manually enter the OTP that I receive on mobile.

My workflow and code snippet below:

Login page

Then comes the selection page where I select OTP. I'm able to test till this page using Pa11y

Need to input my OTP on this page

pa11y.js follows:

const pa11y = require('pa11y');

runTests();

async function runTests() {
    try {

        const loginOptions = {
            actions: [
                'set field #username to [email protected]',
                'set field #password to Password1234',
                'click element #submit', // Fill up login form and submit
                'wait for path to be /protect-summary', // The OTP/other options selection page
                'check field #radio', //selecting OTP option
                'click element #submit', //Submitting second form
                'wait for path to be /otp', //waiting for OTP page
                'wait for path to be /account-page' //want to visit this page after OTP is entered
            ],
            wait: 10000,
            chromeLaunchConfig: {
                headless: false // trying to enter the received OTP quickly on the opened browser
            },
            log: {
                debug: console.log,
                error: console.error,
                info: console.log
            }
        }

        const result = await Promise.all({
            pa11y('http://localhost:3000/', loginOptions);
        });

        console.log(result);

    } catch (error) {
        console.error(error.message);
    }
}
0

There are 0 best solutions below