You can spot a good cotton dress from the doorway. The poor ones sit stiff off the body, hold the shape of the hanger they just came off, and crease into a map of where you sat on the way in. A proper one drapes, softens within an hour of wear, and still looks intentional after a day of sitting, standing, and getting in and out of a car. The gap between the two is weight and weave, and you can feel it before you've even tried either on.
Stick to colours that don't ask much of you. A plain white or an oatmeal is forgiving in a way that bright prints aren't, because cotton takes dye unevenly when it's cheap, and you'll see patchiness at the seams in strong colours long before you'd notice it in a muted one. Navy and a soft faded denim blue wear well too, and hide the inevitable underarm fade that comes from repeated washing. If you're buying your first one, go for a shirt style or simple shift in one of those colours rather than anything with a fussy print, because a plain dress earns you more outfits and shows its age less.
Over months, a decent cotton dress gets softer, not thinner, and that's the test. Thinning at the elbows or across the seat means the weave was too light to start with. Wash it cooler than the label dares you to, because high heat is what kills the colour and shrinks the hem unevenly, and let it dry flat or on a hanger rather than folded over a radiator, which leaves a crease that's murder to iron out. A light steam the next morning sorts most of the damage a day in a bag does to it.
In the shop, pinch the fabric between your fingers before anything else. If you can see your hand through it when you hold it to the light, it'll cling and crease twice as fast once it's on. Check the dress sits properly at the widest part of your hips without pulling at the buttons or gaping at the bust, since cotton has almost no give and will show every centimetre you've misjudged. Sit down in it if you can. If it rides up badly sitting, it'll do the same on a bus, a work chair, anywhere you actually live your day.
Thrown over trainers it looks like you didn't try, which is the whole point, and it makes the jacket you already own look like you planned the pairing on purpose.