Check engine light keeps throwing small evap leak code

I’m pretty sure it’s not the fuel filler cap

It could very well be a bad vent valve or purge valve

You already tried the cheapest option . . . which is replacing the cap and clearing the code

Since emission inspection is coming up, I suggest you bite the bullet and pay a reputable shop to diagnose and repair the problem

Unless you have professional experience as a mechanic, along with a high-level bi-directional scanner, smoke machine and the knowledge needed to figure this out