I have worked on same product about 5 years. and I have shipped three different product cycles and now I'm working on next version.

Over this period, whenever we moved over to the new version, one of problem was to convert or rewrite test code. you may think that it is not a big deal. but if you have more than 2000 P1 test cases(which have multiple scenarios) and most of scenarios should test multiple languages with different types of configurations. so it was head-ache.

However my team could learn that though the product is changed and new features are added for each product cycle. we could see that basic functionalities and conceptual unit actions are not changed. so we took an approach to bring up one middle layer which keeps the definition of all concept unit actions and make our automation scripts are using the middle layers for most of cases. then we could move around our automation between different automation harness and products.

Yeah, still we need to implement new internal logic for each different testing targets(like new product), but the cost to move over old scripts could dramatically reduced comparing to our previous experience.