Test getting and setting nonstable css properties to non-default values

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

el.style.setProperty('shape-margin', '10px')
el.style.getPropertyValue('shape-margin') is 10px
getComputedStyle(el).getPropertyValue('shape-margin') is 10px


el.style.setProperty('shape-outside', 'circle(10px at 10px 10px)')
el.style.getPropertyValue('shape-outside') is circle(10px at 10px 10px)
getComputedStyle(el).getPropertyValue('shape-outside') is circle(10px at 10px 10px)


el.style.setProperty('grid-auto-columns', 'auto')
el.style.getPropertyValue('grid-auto-columns') is auto
getComputedStyle(el).getPropertyValue('grid-auto-columns') is auto


el.style.setProperty('grid-auto-rows', 'auto')
el.style.getPropertyValue('grid-auto-rows') is auto
getComputedStyle(el).getPropertyValue('grid-auto-rows') is auto


el.style.setProperty('grid-template-columns', 'min-content')
el.style.getPropertyValue('grid-template-columns') is min-content
getComputedStyle(el).getPropertyValue('grid-template-columns') is min-content


el.style.setProperty('grid-template-rows', 'max-content')
el.style.getPropertyValue('grid-template-rows') is max-content
getComputedStyle(el).getPropertyValue('grid-template-rows') is max-content


el.style.setProperty('grid-column-start', 'auto')
el.style.getPropertyValue('grid-column-start') is auto
getComputedStyle(el).getPropertyValue('grid-column-start') is auto


el.style.setProperty('grid-column-end', '2')
el.style.getPropertyValue('grid-column-end') is 2
getComputedStyle(el).getPropertyValue('grid-column-end') is 2


el.style.setProperty('grid-row-start', '1')
el.style.getPropertyValue('grid-row-start') is 1
getComputedStyle(el).getPropertyValue('grid-row-start') is 1


el.style.setProperty('grid-column', 'auto')
el.style.getPropertyValue('grid-column') is auto / auto
getComputedStyle(el).getPropertyValue('grid-column') is auto / auto


el.style.setProperty('grid-row', '1')
el.style.getPropertyValue('grid-row') is 1 / auto
getComputedStyle(el).getPropertyValue('grid-row') is 1 / auto


el.style.setProperty('grid-area', '2')
el.style.getPropertyValue('grid-area') is 2 / auto / auto / auto
getComputedStyle(el).getPropertyValue('grid-area') is 2 / auto / auto / auto


el.style.setProperty('grid-auto-flow', 'column')
el.style.getPropertyValue('grid-auto-flow') is column
getComputedStyle(el).getPropertyValue('grid-auto-flow') is column


el.style.setProperty('grid-template-areas', '"test"')
el.style.getPropertyValue('grid-template-areas') is "test"
getComputedStyle(el).getPropertyValue('grid-template-areas') is "test"


el.style.setProperty('text-justify', 'distribute')
el.style.getPropertyValue('text-justify') is 
getComputedStyle(el).getPropertyValue('text-justify') is 


el.style.setProperty('text-underline-position', 'left')
el.style.getPropertyValue('text-underline-position') is left
getComputedStyle(el).getPropertyValue('text-underline-position') is left


el.style.setProperty('text-underline-position', 'right')
el.style.getPropertyValue('text-underline-position') is right
getComputedStyle(el).getPropertyValue('text-underline-position') is right


el.style.setProperty('text-underline-position', 'under left')
el.style.getPropertyValue('text-underline-position') is under left
getComputedStyle(el).getPropertyValue('text-underline-position') is under left


el.style.setProperty('text-underline-position', 'right under')
el.style.getPropertyValue('text-underline-position') is under right
getComputedStyle(el).getPropertyValue('text-underline-position') is under right


el.style.setProperty('clear', 'inline-start')
el.style.getPropertyValue('clear') is 
getComputedStyle(el).getPropertyValue('clear') is none


el.style.setProperty('clear', 'inline-end')
el.style.getPropertyValue('clear') is 
getComputedStyle(el).getPropertyValue('clear') is none


el.style.setProperty('float', 'inline-start')
el.style.getPropertyValue('float') is 
getComputedStyle(el).getPropertyValue('float') is none


el.style.setProperty('float', 'inline-end')
el.style.getPropertyValue('float') is 
getComputedStyle(el).getPropertyValue('float') is none


el.style.setProperty('resize', 'block')
el.style.getPropertyValue('resize') is 
getComputedStyle(el).getPropertyValue('resize') is none


el.style.setProperty('resize', 'inline')
el.style.getPropertyValue('resize') is 
getComputedStyle(el).getPropertyValue('resize') is none


PASS successfullyParsed is true

TEST COMPLETE

