From b217e038138a0a012d89aa2851703f8474472133 Mon Sep 17 00:00:00 2001 From: Josh Black Date: Tue, 11 Mar 2025 15:58:35 -0500 Subject: [PATCH 1/3] fix(Radio): update ordering of selectors for checked options --- .changeset/serious-jars-sing.md | 5 +++++ packages/react/src/Radio/Radio.tsx | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/serious-jars-sing.md diff --git a/.changeset/serious-jars-sing.md b/.changeset/serious-jars-sing.md new file mode 100644 index 00000000000..8170f19085b --- /dev/null +++ b/.changeset/serious-jars-sing.md @@ -0,0 +1,5 @@ +--- +"@primer/react": patch +--- + +Update ordering of selectors to improve rendering of checked Radio options diff --git a/packages/react/src/Radio/Radio.tsx b/packages/react/src/Radio/Radio.tsx index be740965bc7..2cffc0e9a59 100644 --- a/packages/react/src/Radio/Radio.tsx +++ b/packages/react/src/Radio/Radio.tsx @@ -4,8 +4,8 @@ import type {SxProp} from '../sx' import type {FormValidationStatus} from '../utils/types/FormValidationStatus' import {RadioGroupContext} from '../RadioGroup/RadioGroup' import {clsx} from 'clsx' -import classes from './Radio.module.css' import sharedClasses from '../Checkbox/shared.module.css' +import classes from './Radio.module.css' import {defaultSxProp} from '../utils/defaultSxProp' import Box from '../Box' From 9ec348841c44dc5f6503d6d2ec24d9d555217376 Mon Sep 17 00:00:00 2001 From: Josh Black Date: Fri, 14 Mar 2025 10:21:31 -0500 Subject: [PATCH 2/3] test(e2e): add checked test --- e2e/components/Radio.test.ts | 92 ++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 52 deletions(-) diff --git a/e2e/components/Radio.test.ts b/e2e/components/Radio.test.ts index 975153e4340..df8c2c661d4 100644 --- a/e2e/components/Radio.test.ts +++ b/e2e/components/Radio.test.ts @@ -2,74 +2,62 @@ import {test, expect} from '@playwright/test' import {visit} from '../test-helpers/storybook' import {themes} from '../test-helpers/themes' -test.describe('Radio', () => { - test.describe('Default', () => { - for (const theme of themes) { - test.describe(theme, () => { - test('default @vrt', async ({page}) => { - await visit(page, { - id: 'components-radio--default', - globals: { - colorScheme: theme, - }, - }) +const stories = [ + { + title: 'Default', + id: 'components-radio--default', + }, + { + title: 'Disabled', + id: 'components-radio-features--disabled', + }, + { + title: 'With Caption', + id: 'components-radio-features--with-caption', + }, + { + title: 'With Leading Visual', + id: 'components-radio-features--with-leading-visual', + }, +] as const - // Default state - expect(await page.screenshot()).toMatchSnapshot(`Radio.Default.${theme}.png`) - }) - }) - } - }) +test.describe('Radio', () => { + for (const story of stories) { + test.describe(story.title, () => { + for (const theme of themes) { + test.describe(theme, () => { + test('default @vrt', async ({page}) => { + await visit(page, { + id: story.id, + globals: { + colorScheme: theme, + }, + }) - test.describe('Disabled', () => { - for (const theme of themes) { - test.describe(theme, () => { - test('default @vrt', async ({page}) => { - await visit(page, { - id: 'components-radio-features--disabled', - globals: { - colorScheme: theme, - }, + // Default state + expect(await page.screenshot()).toMatchSnapshot(`Radio.${story.title}.${theme}.png`) }) - - // Default state - expect(await page.screenshot()).toMatchSnapshot(`Radio.Disabled.${theme}.png`) }) - }) - } - }) + } + }) + } - test.describe('With Caption', () => { + test.describe('Checked', () => { for (const theme of themes) { test.describe(theme, () => { test('default @vrt', async ({page}) => { await visit(page, { - id: 'components-radio-features--with-caption', + id: 'components-radio--playground', globals: { colorScheme: theme, }, - }) - - // Default state - expect(await page.screenshot()).toMatchSnapshot(`Radio.With Caption.${theme}.png`) - }) - }) - } - }) - - test.describe('With Leading Visual', () => { - for (const theme of themes) { - test.describe(theme, () => { - test('default @vrt', async ({page}) => { - await visit(page, { - id: 'components-radio-features--with-leading-visual', - globals: { - colorScheme: theme, + args: { + checked: true, }, }) // Default state - expect(await page.screenshot()).toMatchSnapshot(`Radio.With Leading Visual.${theme}.png`) + expect(await page.screenshot()).toMatchSnapshot(`Radio.Checked.${theme}.png`) }) }) } From f9d9c15b539c512917806ebcbf17b4a8a9213afc Mon Sep 17 00:00:00 2001 From: joshblack Date: Fri, 14 Mar 2025 15:32:12 +0000 Subject: [PATCH 3/3] test(vrt): update snapshots --- .../Radio-Checked-dark-colorblind-linux.png | Bin 0 -> 5318 bytes .../Radio-Checked-dark-dimmed-linux.png | Bin 0 -> 5313 bytes .../Radio-Checked-dark-high-contrast-linux.png | Bin 0 -> 5309 bytes .../Radio-Checked-dark-linux.png | Bin 0 -> 5318 bytes .../Radio-Checked-dark-tritanopia-linux.png | Bin 0 -> 5318 bytes .../Radio-Checked-light-colorblind-linux.png | Bin 0 -> 5303 bytes .../Radio-Checked-light-high-contrast-linux.png | Bin 0 -> 5314 bytes .../Radio-Checked-light-linux.png | Bin 0 -> 5303 bytes .../Radio-Checked-light-tritanopia-linux.png | Bin 0 -> 5303 bytes 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-colorblind-linux.png create mode 100644 .playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-dimmed-linux.png create mode 100644 .playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-linux.png create mode 100644 .playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-tritanopia-linux.png create mode 100644 .playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-light-colorblind-linux.png create mode 100644 .playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-light-high-contrast-linux.png create mode 100644 .playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-light-linux.png create mode 100644 .playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-light-tritanopia-linux.png diff --git a/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-colorblind-linux.png b/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5f925cc1eb49cc9b117a7e9db33a4d2ac29cf4d2 GIT binary patch literal 5318 zcmeHL`%_a#7+s`7Yml^KTd+K$QlT>)MT<5eJW>^ zK^e?6@evwZTlhicX-Ei3E=ZAob9{FVG; zm-o)j?c25q{PHU>8fl}nTk*EfM5X-LT*p_93t5MEOPctk4IflXQr=PAv1K6ANq)xx zmMpxP9xu|8R1B3xXl+M|8H;RHRN9F@AE0Nl&q&mW?Ii$86??Sa;Db|AUr_pTJ{Ex2 zCPD$&^jjPN31`^=oPE^>z^fb0USPxS=MBtqMGy;z7b*@anZ}MEvVCs_`}stXMq;f? zwKGXW1F{yUv<+V|*-8qYaH(;^(I!Fo zD*(u4P2D_aRgp@2Ja49*1X-$~ox%Rp!jlATPS)(ex^j4Nsdny6S({>qx^uH2Lq;2w zago_ns=*#alO5&cak|c|W#^)-%o8OMxn^4otUV`+q1m#-`M0m6F;wOrj+IY|XQ^&h zdI6Aeqk2eNL!Lv0Zl967GwesrDDRzVL8^7A3FPEKj?bP89Gv6hDq30n-E%TZ*V zBsIbh02eEa)JB!hR-S%Hu*80SpX6Q`6u)~?v_f?}+(Ky;at22rR|N_B>*osHLarsy&j;5wdFk_;2i+@dUCY$t zY>V8g;yMNcxJEpR&jvbn0uFeyH8q5|((Cmuc38}S-?$Q1m}#97NBqdL4$*W?**zwS zzO_(OYj`A=Dv_Bw(X;-Csr1oj#vy2BImT>P#gL;9XJt(=$t1U>UiM8Ne~U(=NiCUJ z*T)Z8e8eM%F4v;Dx9u6*oWtCjXTDr0?qsxtQA-L|m?&nIQ7VFctSl#I+Mj5@-dz!( z#*N62TJJXc;y8ab?!jKWTGXXCqUF1A7nT}7i&A?1(4*QJYH$IZ0s;l9h+9SRn~*)NZ#w(ZQ_}`O{y5>Y2Za_dRYOYSAcYn;+1$64J#j7~ zJp5h*1d}dCPYJfdW~NBrYC7K+DdNfyNoqzL0z0W}li0AX;(eOjhE=)TC{iKIqE(=@ zbo^3T?Y_7iTBCZ9$vu=ce08*Pc;WGx92y~)5a_^&0qFQ~Jta1JaT9+$lU8Jf)|Rg` zlndv31-3FL>j{WT=blaQGbN|>R%N^)A7LCs5crVgFpWA3XfiLF5^5E#f@&7+}JlW&P z9#8iCw=aT6Gak)&G~?0C3#>YLEX89f9!vQbOL5@}W=}twNV%Dh76HNjy~zpnyEDK4 E8y8XAC;$Ke literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-dimmed-linux.png b/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-dimmed-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d59f9140d60a93985480b3dcc440e73b71682f GIT binary patch literal 5313 zcmeI0`%_YB9L8UB)iyP2*bOI3YOQf*9n)gU)PORR?Xt3EWp{Gf)h$yhHAE1a+%h*W z<1|Vsda9||%~H|4pc$bST?`~E#2aefNG>WO(BZPD|DfIJM}Bzc%)IA)-}9VjzR%}9 z@5%Wkn&`P;=>h_WBS58OnF@gK7~3Pa>`mut z`gZ1)y^DJ?9bO)1`Gz9TEqpLY++1^UUggrDl6w~-a!c@gm)P#by=-t(sG!d$hO{kS|P||SBsg&Y`JWz3I zAcc_e;v;hJ_qoxa`(%q?l2dgM&kpuhn}_&9cpS3{esi;HtNy*M=S71(^Hb*}I#qiV5ee>SQiNZZH+pGnwZmP!(ug_2^63mp&TaywKA%3sEl!U{7~Xonc$kgIn?+U6ww<>|i$d*@2a7%;lwRA1v6*{v%y z;UoBFw(XSNW^KbS24LQ$fnsdaakJVm=EH$-L+&BAKTvk=#jVr{vf%7!KTX*}5$C^# zlolS@{IWPGS@7{?MYPvZhNe#U2$meB4H#nCW^^f=p}*uw2>13tG{E1-9yz0HF|vke zcwwTvGKt-&*(&@Nagx4OY~^ByS+8eY5=f@*8hXMm-!QFF)7xOke;~~?3SxNCEv8|2 zhEaPIp049%=P$$0)KyunG73=$x9Bt(sylg*MZo9teORhXVhr0-MpK5;XGSOmxTcXe zt7FNThH5VtaQ^&|Q~=pzP8{CdyHcx8^t_{!H@b^NBGdW}Ap@t|o^p_Y-wxTiSRIO2rA(hR zy{lM~dA!w!x*Tf3r=?GL8bkV1y8?w~1#CCj`kQH9u316s6R^572jws2(r4c0T=kFk zaLr<91><#cvd`QWBrw?7dhS1M_Vo;FgMGHG)}Lv>u!9-6OjBN*lHK2wCbjqKd9PTa z){6oA?_XOUrq39z$#JG)(h-C6eZ!kh8ty5SkhM%+Xr#MG1H??!VUv*P6< zf~hq2Si1FjAtlC5Nieid619wxBArESUv@DRyFS!BCM<{hm#jIIs%URlOHF+O*r+4d zoito9yBDuH_z4!m47Y`k>QYs2x~_5p57(=@N~6TjDg|RDX_In-UX9HX4ZdKf&om^% zeJ_gwh~j5>{VPaeyQ6U*V?Pf;aRCTIFbC}bXBC2E= z;k1_4ta*Q!+H82Q;CSIpgOajvdDUV26q&#r>~}8MWSP=Sg9Lg>^FrTE8^glp)V0$4 z$7;!L4Xsx6G`#1^uZy@> zLI%Rmsd`d6LJb2(FM`qEFH41?(mw-ZJpznQ-oAW~_-HjFK6u@R3{_99R}pl*yrfS* zB12<#&jB#SRx$AcXnj+<#`G5{Z%rdpa;qpy)G=Gw5<@ip{MbA@dlQFFEkqWyC!12V z(%`hIcN8~r%jqkK84@K@hDZRqznt4ZVc!4?6!@1Ajej)eOq*7WyJ9d{{s72(dz&J literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-high-contrast-linux.png b/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-high-contrast-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..897b413d73aa1c8b665aa1ba69a3f8ef3f3cfdf9 GIT binary patch literal 5309 zcmeI0|5MX-9LL{^geinw*1SMga@utWlna;?@2Z1I8F*z&7^zY<>C4|Roh=_642efg#%EwMv(kSG z+mhKIyl=}{MNcv(16|)Uh#d}03^-6?pI9?^=XTxA=&IKE&Kvh{#*)#5oY%g)K&0$g z9hojPhgVapuGP)Q}u(iUWu|=M9 zI^=}yotyVEiA|mnN!g$8Ie$QELQ}`QLT<9tt*0AHGvR`{4&Xf`mGaY9eY zpi|~x#}us$lhQmK_N><{jOND3W|J_o8a&fW8l%Ci(Ch-}vClwra6T2B$O|T~0T(V* znu@c#?y2oqS0e$mMb!V|pe+i>H+IIo(&|oh6OU(#*bV*OiI3xH{fO09Jog z;hBykc8o9dv4)hQ756LQPkSpPQKZFcn~tIE4yEWNaLJNIHONh%W@ee{_qX&5v-PcC zJY2}=uU2pqY?I86>E5n4D#8mVelL-uwjY^4*?5>;fS7abCU=R3#irC?sE-F+jKm1M zV>m^5WWHlF8~-4GvEek+M&Uqx8McmbR7|_6f{6}(&Z+xKJ3H)!J$z}7&l})bwjz^) z!jYp+z0-PtxCVf?BS{kc;uNdJ#5RcSQ-Nsr0G%ukLhE znCSfZEWM`TQRCs;8flTdIjya}zW#)LVTjC>WsSU9$9oZgSCI_7A*6hdgPshyqUcG` zF_rF|8D>Oi8K;!P*XahCdE(4j-%L_lW@bYudQ=2ADq%_);j{b53N3htSvhtu&(crC zQ*v^0rvJFfce&(3idLFE{YTBisKd=J{oZ17cJ^!@-h(mo7|Uj_+rjD@r{e8>c!saa zq7sCKg)!t>rjJY4<952Y6A_xdZ|D_04OffKWDS+azPpq_#+?;=jB1n?-#z?D8LoD+ z%wA!XKs@_fR16n(O_F3&rR*Xo&dhWCF7#>cnr_f#&V{Xe3ErtCm35`7*>1Nh;UP0~ zqDmlM_Gp*q^bGgQHm;D2 z5y2>a?vgG=xezgMlsKmrdxVXptV;CHNKD0Gt?_wNT?8gPm^WH%pB7@M{bEj;}MOy04#okF% zYbpTaZg|h%q->{Mg@obA_)_XWBI7e7)F1f&Tt)so`t$hjA2NRR_|@ZA&p&(o`#t0L sjNdbU&-{=734Wybk>W?ne?y8l2&*oWuvv>6kiRaFnnFl!-j#mwFGk+wg8%>k literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-linux.png b/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5f925cc1eb49cc9b117a7e9db33a4d2ac29cf4d2 GIT binary patch literal 5318 zcmeHL`%_a#7+s`7Yml^KTd+K$QlT>)MT<5eJW>^ zK^e?6@evwZTlhicX-Ei3E=ZAob9{FVG; zm-o)j?c25q{PHU>8fl}nTk*EfM5X-LT*p_93t5MEOPctk4IflXQr=PAv1K6ANq)xx zmMpxP9xu|8R1B3xXl+M|8H;RHRN9F@AE0Nl&q&mW?Ii$86??Sa;Db|AUr_pTJ{Ex2 zCPD$&^jjPN31`^=oPE^>z^fb0USPxS=MBtqMGy;z7b*@anZ}MEvVCs_`}stXMq;f? zwKGXW1F{yUv<+V|*-8qYaH(;^(I!Fo zD*(u4P2D_aRgp@2Ja49*1X-$~ox%Rp!jlATPS)(ex^j4Nsdny6S({>qx^uH2Lq;2w zago_ns=*#alO5&cak|c|W#^)-%o8OMxn^4otUV`+q1m#-`M0m6F;wOrj+IY|XQ^&h zdI6Aeqk2eNL!Lv0Zl967GwesrDDRzVL8^7A3FPEKj?bP89Gv6hDq30n-E%TZ*V zBsIbh02eEa)JB!hR-S%Hu*80SpX6Q`6u)~?v_f?}+(Ky;at22rR|N_B>*osHLarsy&j;5wdFk_;2i+@dUCY$t zY>V8g;yMNcxJEpR&jvbn0uFeyH8q5|((Cmuc38}S-?$Q1m}#97NBqdL4$*W?**zwS zzO_(OYj`A=Dv_Bw(X;-Csr1oj#vy2BImT>P#gL;9XJt(=$t1U>UiM8Ne~U(=NiCUJ z*T)Z8e8eM%F4v;Dx9u6*oWtCjXTDr0?qsxtQA-L|m?&nIQ7VFctSl#I+Mj5@-dz!( z#*N62TJJXc;y8ab?!jKWTGXXCqUF1A7nT}7i&A?1(4*QJYH$IZ0s;l9h+9SRn~*)NZ#w(ZQ_}`O{y5>Y2Za_dRYOYSAcYn;+1$64J#j7~ zJp5h*1d}dCPYJfdW~NBrYC7K+DdNfyNoqzL0z0W}li0AX;(eOjhE=)TC{iKIqE(=@ zbo^3T?Y_7iTBCZ9$vu=ce08*Pc;WGx92y~)5a_^&0qFQ~Jta1JaT9+$lU8Jf)|Rg` zlndv31-3FL>j{WT=blaQGbN|>R%N^)A7LCs5crVgFpWA3XfiLF5^5E#f@&7+}JlW&P z9#8iCw=aT6Gak)&G~?0C3#>YLEX89f9!vQbOL5@}W=}twNV%Dh76HNjy~zpnyEDK4 E8y8XAC;$Ke literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-tritanopia-linux.png b/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-dark-tritanopia-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5f925cc1eb49cc9b117a7e9db33a4d2ac29cf4d2 GIT binary patch literal 5318 zcmeHL`%_a#7+s`7Yml^KTd+K$QlT>)MT<5eJW>^ zK^e?6@evwZTlhicX-Ei3E=ZAob9{FVG; zm-o)j?c25q{PHU>8fl}nTk*EfM5X-LT*p_93t5MEOPctk4IflXQr=PAv1K6ANq)xx zmMpxP9xu|8R1B3xXl+M|8H;RHRN9F@AE0Nl&q&mW?Ii$86??Sa;Db|AUr_pTJ{Ex2 zCPD$&^jjPN31`^=oPE^>z^fb0USPxS=MBtqMGy;z7b*@anZ}MEvVCs_`}stXMq;f? zwKGXW1F{yUv<+V|*-8qYaH(;^(I!Fo zD*(u4P2D_aRgp@2Ja49*1X-$~ox%Rp!jlATPS)(ex^j4Nsdny6S({>qx^uH2Lq;2w zago_ns=*#alO5&cak|c|W#^)-%o8OMxn^4otUV`+q1m#-`M0m6F;wOrj+IY|XQ^&h zdI6Aeqk2eNL!Lv0Zl967GwesrDDRzVL8^7A3FPEKj?bP89Gv6hDq30n-E%TZ*V zBsIbh02eEa)JB!hR-S%Hu*80SpX6Q`6u)~?v_f?}+(Ky;at22rR|N_B>*osHLarsy&j;5wdFk_;2i+@dUCY$t zY>V8g;yMNcxJEpR&jvbn0uFeyH8q5|((Cmuc38}S-?$Q1m}#97NBqdL4$*W?**zwS zzO_(OYj`A=Dv_Bw(X;-Csr1oj#vy2BImT>P#gL;9XJt(=$t1U>UiM8Ne~U(=NiCUJ z*T)Z8e8eM%F4v;Dx9u6*oWtCjXTDr0?qsxtQA-L|m?&nIQ7VFctSl#I+Mj5@-dz!( z#*N62TJJXc;y8ab?!jKWTGXXCqUF1A7nT}7i&A?1(4*QJYH$IZ0s;l9h+9SRn~*)NZ#w(ZQ_}`O{y5>Y2Za_dRYOYSAcYn;+1$64J#j7~ zJp5h*1d}dCPYJfdW~NBrYC7K+DdNfyNoqzL0z0W}li0AX;(eOjhE=)TC{iKIqE(=@ zbo^3T?Y_7iTBCZ9$vu=ce08*Pc;WGx92y~)5a_^&0qFQ~Jta1JaT9+$lU8Jf)|Rg` zlndv31-3FL>j{WT=blaQGbN|>R%N^)A7LCs5crVgFpWA3XfiLF5^5E#f@&7+}JlW&P z9#8iCw=aT6Gak)&G~?0C3#>YLEX89f9!vQbOL5@}W=}twNV%Dh76HNjy~zpnyEDK4 E8y8XAC;$Ke literal 0 HcmV?d00001 diff --git a/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-light-colorblind-linux.png b/.playwright/snapshots/components/Radio.test.ts-snapshots/Radio-Checked-light-colorblind-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f33af68402a9b9c1f58578e086ba9fb264323ea9 GIT binary patch literal 5303 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