loginAndUpdateValidKey decided whether a key was already working by looking for the nav tree, and looked for it in the body captured before login. A free tier estate renders the tree as well, so on an unlicensed estate the command took the 'already licensed' branch every time and never applied a key. Every upload spec then lost its feature set: onShowUploadModal shows the locked feature dialog instead of the panel, so input#file-upload never renders. The loaded page is read again after login, the licence banner decides whether a key is needed, and an estate with no key is left untouched unless the caller asked for one - the free tier specs are written against that state. Measured on an unlicensed mock estate: excel.cy.ts 24 failing in 14m 1s before, 24 passing in 5m 44s after; csv.cy.ts 1 failing before, 1 passing after.