I have many departments accessing the same report that has about 20 different pages. I only want sales to see sales related pages, production to see production pages, etc. Is there any way I can use roles to show specific pages to specific roles?
In Power BI, it's not supported to limit access on pages based on Roles. And there's no page level visibility settings. You may submit a feature request on Idea: https://ideas.powerbi.com/forums/265200-power-bi-ideas
In this scenario, I suggest you separate the sales and production into different reports. And you can share them to corresponding category of users.