What am I missing about Progressive Enhancement?

I remember when I first read about progressive enhancement. It was back when you couldn’t depend on everyone having javascript. So the case for building a functional site without javascript first, and then enhancing the experience for those with javascript made sense.

But now javascript is ubiquitous. Even screenreaders have it. That argument holds much less weight. Is there still a good case for progressive enhancement?

I suspect there is, because “we don’t need progressive enhancement because everyone has javascript” feels a lot like “we don’t need TDD because there are better ways to catch bugs”, an argument that I disagree with the very foundation of.

I remember when I first read about TDD. I was exposed to it as a way to prevent bugs. The things I were building were small, and I hadn’t experienced many maintenance headaches yet. So the case for writing some tests to make sure your “code was working” made sense.

But then it became cumbersome, and I still had bugs. The time it took to write and maintain the tests didn’t seem worth the effort. Is there still a good case for TDD?

For me, yes, there is. I soon learned to use TDD as a design tool first, and a safety net second. This made the effort worth it again. Is there a similar benefit to Progressive Enhancement? Something that provides value besides “it works for people without javascript” that makes it still worth the effort?

I think there’s something there that I’m missing. So I’m asking you. If you have thoughts, please comment.