Danny Guo outlines the steps he took in writing a Nodejs / Puppeteer script to enter data into TurboTax.

I use Betterment for some of my investments. For my 2018 tax return, I wanted to use the free edition of Intuit’s TurboTax Online. For non-retirement account investments, each transaction must be documented in the tax return with Form 8949. I had hundreds of transactions in my account in 2018, and I didn’t want to enter them manually.

Betterment has a TurboTax integration to do this work automatically, but TurboTax doesn’t allow importing investment transactions unless you have the Premier plan or above. I also couldn’t import a TXF file because that feature is only available in the desktop versions of TurboTax. I didn’t want to pay for the Premier plan, in part because of Intuit’s lobbying efforts against a simpler tax filing system and because of their other questionable practices.

This seemed like a great opportunity to try out Puppeteer. It’s a library for controlling Chrome and is developed by the Chrome team.

If you are into Puppeteer automation, as much as I am, it’s a good read. I learned some things like this trick with Promises to click a button after the page finishes loading:

await Promise.all([
    page.waitForNavigation(),
    page.click('#ius-sign-in-submit-btn')
]);

Or setting the defaultViewport to null to have it be the same size as the window size.

(async () => {
    const browser = await puppeteer.launch({
        defaultViewport: null,
        headless: false
    });
})();

More here - Automating TurboTax Data Entry With Puppeteer

🧇