You seem to be focused on the join between the CTE and the Inventory table - which is not where the problem exists. The problem exists in the CTE portion of the query.
The plan from your test environment shows us that the tables CasProduct and Product are joined first...then a key lookup from the Product table, then the ProductType table is joined...and finally that is joined to Inventory.
A bit concerning are the estimates on the Inventory table and the results from the CTE - where both estimate 201 rows to be returned and actual rows are 379.
The plan from production starts with the Inventory table and returns all of the rows. Presumably that is because the new index is being utilized and almost all rows are returned. The version in PROD is essentially returning all rows and joining - then filtering.
In TEST - validate your estimates are up to date first...then review the CTE query and validate the joins on each table are correct. It looks to me like there may be a missing join predicate on the ProductType or the statistics are incorrect for that table also - as it expects 14 rows and is only returning 12.
Once you have that...then verify you have the same indexes in PROD and statistics are up to date on all tables. Compare the plans after confirming statistics and if they are not the same - we can take a look to see what differences there are and why. Most likely, the difference (if any) will be due to the amount of data in PROD compared to TEST.