td scope=row does NOT work with VO
Quarter Apples Oranges Bananas
Q1 100 200 250
Q2 120 180 230
Q3 110 120 210
Q4 140 150 300

 

using th as row and column headers works with VO
Quarter Apples Oranges Bananas
Q1 100 200 250
Q2 120 180 230
Q3 110 120 210
Q4 140 150 300

 

omitting a TH in the top left cell causes bugs where VO incorrectly reads the wrong headers
  Apples Oranges Bananas
Q1 100 200 250
Q2 120 180 230
Q3 110 120 210
Q4 140 150 300

 

using headers="id1 id2" does NOT work with VO
Quarter Apples Oranges Bananas
Q1 100 200 250
Q2 120 180 230
Q3 110 120 210
Q4 140 150 300

 

using th as row and column headers in the second row and second column does NOT work with VO
0 1 2 3 4
1 Quarter Apples Oranges Bananas
2 Q1 100 200 250
3 Q2 120 180 230
4 Q3 110 120 210
5 Q4 140 150 300

 

using th scope="row|col" as row and column headers in the second row and second column does work with VO macOS but not VO iOS
0 1 2 3 4
1 Quarter Apples Oranges Bananas
2 Q1 100 200 250
3 Q2 120 180 230
4 Q3 110 120 210
5 Q4 140 150 300

 

using headers to point to row headers in 2nd colum does not work in VO or JAWS, only works in NVDA/Firefox, this test is to determine link purpose using a programmatically determined context
Report Quarter Apples Oranges Bananas
print Q1 100 200 250
print Q2 120 180 230
print Q3 110 120 210
print Q4 140 150 300