We have a 10 non production System Integration test environments. Right now we have common shared Solr server. Likewise Is it possible to have shared Xconnect and Processing Webapps for multiple non production CD and CMS webapps?
Ultimately, it likely comes down to "why do you want to share your apps?" and then making a decision on what to share and what to isolate based on your priorities.
I echo @Dean OBrien on this one. You are sharing a SOLR server, but not sharing the actual indexes (you could share indexes, but that's not likely to work well!). You can do something similar with xConnect and processing web apps. You cannot share the database entries, indexes, apps, but you could deploy them to a combined server on a VM instead of using isolated web apps if you are looking to reduce hosting costs. If these are not meant to be performant environments, you may not notice the issue of running multiple environments app installs on a single VM.
An example could be like the following (simplified, there are other apps and services and databases too that you need, and this shows only 3):
SQL Server instance
- xDB ShardManager1
- xDB Shard1_1
- xDB Shard1_2
- xDB ShardManager2
- xDB Shard2_1
- xDB Shard2_2
- xDB ShardManager3
- xDB Shard3_1
- xDB Shard3_2
This would allow you to share some resources and move towards an IaaS approach, although it will impact your performance and that shared SQL Server is going to start growing fast with all those xConnects writing to it.
This also breaks isolation of your environments meaning that your infrastructure-as-code approach is harder to achieve because you now have shared pieces that work across multiple environments. It would be harder to tear down just environment 3 than before when they are fully isolated apps.
If I understand your question, you are asking if it is possible to have a shared XConnect or Processing instance, that serves two separate Sitecore CMS instances (i.e. these have separate master databases etc).
This is not possible, because the configuration of those Xconnect / Processing instances point to databases / queues that are specific to the Sitecore instance in question. You could however, have multiple XConnect instances running on the same virtual machine. Each of those could be configured / dedicated to one specific Sitecore instance.
The reason it is possible with your shared SOLR server, is because one SOLR server can host multiple COREs. Those cores dont need to be related and can be access from multiple applications.