What does the MiniWallet class currently do and need to do in the Bitcoin Core functional test framework? I tried to run the Taproot functional tests after building Bitcoin Core with the wallet disabled (as I knew there was no Taproot code in the Core wallet at the time of writing, December 2020).
However, they were skipped because a number of the functional tests currently rely on the Core wallet to create and sign transactions. (Thanks to Marco Falke for pointing this out on IRC.)
The introduction of MiniWallet though raises the prospect of being able to update these non-wallet functional tests so they no longer rely on the Core wallet.
There is a good first issue open on the Bitcoin Core repo to do this for all non-wallet tests. As Marco states in that issue:

This is an open-ended issue. You can find candidate tests via
git grep self.skip_if_no_wallet(). Exclude the tests that start with wallet_, as those are tests that are meant to test the Bitcoin Core wallet.

So what does the MiniWallet class currently do (and perhaps need to do) so that all non-wallet functional tests can be rewritten to no longer rely on the Core wallet?
At the moment, MiniWallet doesn't do any signing. It generates an address and sends an effective regtest coinbase to it. It then constructs an OP_TRUE transaction that spends to yourself with a fee.
I'm not sure at this stage if this is enough to replace the reliance on the Core wallet for all non-wallet functional tests but I will look into it more.
MiniWallet is not a wallet handled by the node, it is an &quot;external&quot; wallet coded in Python for testing. gettransaction only works for those wallets handled by the node, that's why the error says: non-wallet transaction id