If you don't mind, was that a Selenium webdriver ?
No Selenium. I didn't use any helpers, although in retrospect maybe that would have taken less time. Maybe not though.
It's .Net Core C# running on my Linux VPS in cron hourly. It just does HTTP GETs and POSTs using HttpClient and a persistent cookie jar. Most of it is just looking for stuff on the page with regex and then posting the fields required. For secret question/answer for GCkey I have those in the config so when it gets asked the question it can reply with the right answer.
The only tricky bit was one page that a POST returns has a big SAML blob on the page that is posted back normally using JS. That's why you see a white screen for a second when logging in with one of the later GCKey stages. It took me a while watching the traffic with web inspector and then basically just copying that logic to my code for each page.
I think it's something like 7 requests to get logged in and get to the point of looking at the application status. It takes about 9-13 seconds for my app each time.
Then, it logs the status/time in a SQLite DB and dumps that DB to a text file that I can view with a bookmarked file on my server just to make sure it's still fetching. When it runs, it looks to see if the last status was Submitted and the current status is
not Submitted and if that's the case, it sends a POST to my IFTTT webhook that's set up to email me and send a push to the IFTTT mobile app containing the date/time of the change, the new status, and the previous status.
It's all pretty easy. It didn't take more than a few hours. I would share the source code, but I don't want stuff tracked back to me and then have IRCC mad at me. If they had a captcha or any protection at all, I couldn't have done it.
The output file I use to monitor it looks like this:
id|status|updated_on
1483|Submitted|2019-03-21 15:00:09.1818565
1482|Submitted|2019-03-21 14:00:07.9316023
1481|Application/profile updated|2019-03-21 13:00:08.907479
1480|Submitted|2019-03-21 12:00:08.5078814