@russoz Thanks for your detailed response on this 
the fact that all targets being roles, they can be easily reused by other tests (in community.general, see test/integration/targets/setup_* ).
Yes, in community.beszel we have one called setup_hub which is re-used across different integration tests. I don’t think there is any reason from a technical standpoint for why this kind of setup_* role target for the collection’s integration tests couldn’t be implemented in a molecule scenario instead. 
the aliases file, allowing some degree of control on how the CI interacts with that particular test. And ansible-test is aware of the distinction between Ansible controller and Ansible target nodes.
AFAIK I don’t think molecule can do any of that, so if those are required for the collection integration tests then this is definitely a gap with molecule right now. Are you using any of that functionality from ansible-test integration for your collection integration tests in community.openwrt right now?
Now that I think of it, community.beszel is using antsibull-nox sessions.ansible_test_integration_w_default_container.core_python_versions which I believe under the hood runs ansible-test integration with specific Python versions.
It appears to me that maybe a wider community conversation about whether ansible-test integration is still the best tool / approach for collection integration testing, given that molecule has the new “ansible-native” design (as you mentioned). But that being said, there are some gaps which molecule might not be able to fill at this time.
the framework has gone under a significant amount of changes in the recent couple of years. There is now this “ansible-native” way of expressing the configuration, which seems to be the new preferred way of doing so
The new “ansible-native” design with molecule IMO provides greater flexibility as you can have any Ansible tasks you want in the create or prepare sequences to be ran before the actual testing sequence (converge). Basically the equivalent of the integration setup_* targets. This includes having task files or roles (using include_role) which can be re-used across molecule scenarios. Please see below examples.
However, most of the examples in the internet are based on the “old” configuration structure. Official docs fall short of providing real-life examples for this new model as well.
Completely agree with you here, the real-world examples are lacking right now using the new design but I’m thinking we could work together to improve the documentation around this? I’m assuming you have some examples in community.openwrt we could also reference in documentation?
I have some real-world examples in community.beszel:
extensions/molecule/common/create.yml - The common create stage tasks. Deploys a Docker Compose stack and creates a container using community.docker collection modules.
extensions/molecule/common/beszel_public_key.yml - Common tasks to get the Beszel Hub public key which is re-used in different molecule scenarios.
These are both re-used in the agent_default molecule scenario.
- Maybe remove the pytest-ansible in the middle from the mix
Yes, I can see from a maintenance perspective that adding another dependency / tool to the collection could increase complexity and maintenance burden etc.
Hopefully I’ll have some time this week to look at your implementation in detail tying together ansible-test, molecule and pytest-ansible in community.openwrt - very cool! I’d also be interested in discussing whether that implementation could be further developed to become a newer / alternate method for collection integration testing, or we feedback tooling improvements so molecule can be used without the need for pytest-ansible being in the mix.
Appreciate your thoughts on this topic @russoz.