diff --git a/app/assets/javascripts/pages/admin/application_settings/general/components/signup_checkbox.vue b/app/assets/javascripts/pages/admin/application_settings/general/components/signup_checkbox.vue index 804e87c86873b8419bf183f1b8285d818205e6a7..fff64c78a86ad1a46eed0d9f5e149fdcec2f269a 100644 --- a/app/assets/javascripts/pages/admin/application_settings/general/components/signup_checkbox.vue +++ b/app/assets/javascripts/pages/admin/application_settings/general/components/signup_checkbox.vue @@ -9,7 +9,7 @@ export default { id: { type: String, required: false, - default: '', + default: undefined, }, name: { type: String, diff --git a/ee/spec/frontend/ai/settings/components/ai_models_form_spec.js b/ee/spec/frontend/ai/settings/components/ai_models_form_spec.js index f3bcaeab560c1b78688648f0e43ec649c8b8e6e3..2729419d9dbf766194bb8198d9235947ea380340 100644 --- a/ee/spec/frontend/ai/settings/components/ai_models_form_spec.js +++ b/ee/spec/frontend/ai/settings/components/ai_models_form_spec.js @@ -64,7 +64,7 @@ describe('AiModelsForm', () => { }); it('renders the checkbox checked', () => { - expect(findCheckbox().attributes('checked')).toBeDefined(); + expect(findCheckbox().props('checked')).toBe(true); }); }); diff --git a/ee/spec/frontend/ai/settings/components/duo_core_features_form_spec.js b/ee/spec/frontend/ai/settings/components/duo_core_features_form_spec.js index 68970394ea97b9b4a509ee9f835ef15e5fb046b7..08800f1209b70c6e3a80785a7b1bba34e77c5ac1 100644 --- a/ee/spec/frontend/ai/settings/components/duo_core_features_form_spec.js +++ b/ee/spec/frontend/ai/settings/components/duo_core_features_form_spec.js @@ -113,7 +113,7 @@ describe('DuoCoreFeaturesForm', () => { it('disables the checkbox', () => { wrapper = createComponent({ props: { disabledCheckbox: true } }); - expect(findFormCheckbox().attributes('disabled')).toBeDefined(); + expect(findFormCheckbox().props('disabled')).toBeDefined(); }); }); @@ -122,6 +122,6 @@ describe('DuoCoreFeaturesForm', () => { await wrapper.setProps({ disabledCheckbox: true }); - expect(findFormCheckbox().attributes('disabled')).toBeDefined(); + expect(findFormCheckbox().props('disabled')).toBeDefined(); }); }); diff --git a/ee/spec/frontend/ai/settings/components/duo_expanded_logging_form_spec.js b/ee/spec/frontend/ai/settings/components/duo_expanded_logging_form_spec.js index 03db7b1e27347a6f643b2851688a28e81ea39fa3..5baa8401c9bf0cf570fc84d08f6d796d132f9c5b 100644 --- a/ee/spec/frontend/ai/settings/components/duo_expanded_logging_form_spec.js +++ b/ee/spec/frontend/ai/settings/components/duo_expanded_logging_form_spec.js @@ -28,14 +28,13 @@ describe('DuoExpandedLoggingForm', () => { const findTitle = () => wrapper.find('h5').text(); const findCheckbox = () => wrapper.findComponent(GlFormCheckbox); - const findCheckboxLabel = () => wrapper.findByTestId('ai-logging-checkbox'); it('has the correct title', () => { expect(findTitle()).toBe('Enable AI logs'); }); it('has the correct label', () => { - expect(findCheckboxLabel().text()).toBe( + expect(findCheckbox().text()).toBe( 'Capture detailed information about AI-related activities and requests.', ); }); @@ -46,7 +45,7 @@ describe('DuoExpandedLoggingForm', () => { }); it('renders the checkbox checked', () => { - expect(findCheckbox().attributes('checked')).toBeDefined(); + expect(findCheckbox().props('checked')).toBe(true); }); }); @@ -56,7 +55,7 @@ describe('DuoExpandedLoggingForm', () => { }); it('renders the checkbox unchecked', () => { - expect(findCheckbox().attributes('checked')).toBeUndefined(); + expect(findCheckbox().props('checked')).toBe(false); }); }); }); diff --git a/ee/spec/frontend/ai/settings/components/duo_experiment_beta_features_form_spec.js b/ee/spec/frontend/ai/settings/components/duo_experiment_beta_features_form_spec.js index 529674b4e07cf1a2c19a8510e222f4b30c9cb44a..37ac93ccbf83dd1e98ef8fdcb97187ba2bad4b56 100644 --- a/ee/spec/frontend/ai/settings/components/duo_experiment_beta_features_form_spec.js +++ b/ee/spec/frontend/ai/settings/components/duo_experiment_beta_features_form_spec.js @@ -65,7 +65,7 @@ describe('DuoExperimentBetaFeaturesForm', () => { }); it('sets initial checkbox state based on experimentFeaturesEnabled prop when unselected', () => { - expect(findFormCheckbox().attributes('checked')).toBe(undefined); + expect(findFormCheckbox().props('checked')).toBe(false); }); it('emits change event when checkbox is clicked', () => { @@ -89,7 +89,7 @@ describe('DuoExperimentBetaFeaturesForm', () => { }); it('disables checkbox', () => { - expect(findFormCheckbox().attributes().disabled).toBe('true'); + expect(findFormCheckbox().props('disabled')).toBe(true); }); it('shows popover', () => { diff --git a/ee/spec/frontend/ai/settings/components/duo_prompt_cache_form_spec.js b/ee/spec/frontend/ai/settings/components/duo_prompt_cache_form_spec.js index 4fe30b7ceba88e2573e186fab27c3881743328cb..def74d066412658dcf7f9bd92481f9f794696e0a 100644 --- a/ee/spec/frontend/ai/settings/components/duo_prompt_cache_form_spec.js +++ b/ee/spec/frontend/ai/settings/components/duo_prompt_cache_form_spec.js @@ -60,8 +60,7 @@ describe('DuoPromptCacheForm', () => { }); it('sets initial checkbox state based on promptCacheEnabled prop when unselected', () => { - // Fix: Use 'checked' prop instead of 'value' - expect(findFormCheckbox().props('value')).toBe(undefined); + expect(findFormCheckbox().props('checked')).toBe(false); }); it('emits change event when checkbox is clicked', async () => { @@ -86,7 +85,7 @@ describe('DuoPromptCacheForm', () => { }); it('disables checkbox', () => { - expect(findFormCheckbox().attributes().disabled).toBe('true'); + expect(findFormCheckbox().props('disabled')).toBe(true); }); it('shows popover', () => { @@ -95,7 +94,9 @@ describe('DuoPromptCacheForm', () => { }); it('renders checkbox with data-testid attribute', () => { - expect(findFormCheckbox().attributes('data-testid')).toBe('use-prompt-cache-checkbox'); + expect(findFormCheckbox().find('input').attributes('data-testid')).toBe( + 'use-prompt-cache-checkbox', + ); }); }); }); diff --git a/ee/spec/frontend/ai/settings/components/duo_workflow_settings_form_spec.js b/ee/spec/frontend/ai/settings/components/duo_workflow_settings_form_spec.js index 74620e0d6497d3404dd9e8865a65c25a81c63131..bec0d3c6caf522671792fbded4da337e9e5bf85f 100644 --- a/ee/spec/frontend/ai/settings/components/duo_workflow_settings_form_spec.js +++ b/ee/spec/frontend/ai/settings/components/duo_workflow_settings_form_spec.js @@ -47,9 +47,9 @@ describe('DuoWorkflowSettingsForm', () => { await nextTick(); if (isMcpEnabled) { - expect(findFormCheckbox().attributes('checked')).toBe(String(isMcpEnabled)); + expect(findFormCheckbox().props('checked')).toBe(isMcpEnabled); } else { - expect(findFormCheckbox().attributes('checked')).toBeUndefined(); + expect(findFormCheckbox().props('checked')).toBe(false); } }, ); @@ -62,13 +62,13 @@ describe('DuoWorkflowSettingsForm', () => { }); it('renders checkbox with correct data-testid attribute', () => { - expect(findFormCheckbox().attributes('data-testid')).toBe( + expect(findFormCheckbox().find('input').attributes('data-testid')).toBe( 'enable-duo-workflow-mcp-enabled-checkbox', ); }); it('renders checkbox with correct name attribute', () => { - expect(findFormCheckbox().attributes('name')).toBe( + expect(findFormCheckbox().props('name')).toBe( 'namespace[ai_settings_attributes][duo_workflow_mcp_enabled]', ); }); diff --git a/ee/spec/frontend/compliance_dashboard/components/frameworks_report/edit_framework/components/projects_section_spec.js b/ee/spec/frontend/compliance_dashboard/components/frameworks_report/edit_framework/components/projects_section_spec.js index 248f6520220a94e535cc8d0a957429291c5ab4f6..89a0d711b76df3ce809c869bab4812be796648db 100644 --- a/ee/spec/frontend/compliance_dashboard/components/frameworks_report/edit_framework/components/projects_section_spec.js +++ b/ee/spec/frontend/compliance_dashboard/components/frameworks_report/edit_framework/components/projects_section_spec.js @@ -217,8 +217,7 @@ describe('Projects section', () => { describe('project selection', () => { it('selects all projects when select all checkbox is clicked', async () => { - const selectAllCheckbox = findSelectAllCheckbox(); - await selectAllCheckbox.setChecked(true); + await findSelectAllCheckbox().setChecked(true); await nextTick(); const emittedEvents = wrapper.emitted('update:projects'); @@ -229,10 +228,9 @@ describe('Projects section', () => { }); it('deselects all projects when select all checkbox is unchecked', async () => { - const selectAllCheckbox = findSelectAllCheckbox(); - await selectAllCheckbox.setChecked(true); + await findSelectAllCheckbox().setChecked(true); await nextTick(); - await selectAllCheckbox.setChecked(false); + await findSelectAllCheckbox().setChecked(false); await nextTick(); const emittedEvents = wrapper.emitted('update:projects'); diff --git a/ee/spec/frontend/compliance_dashboard/components/projects_report/projects_table_spec.js b/ee/spec/frontend/compliance_dashboard/components/projects_report/projects_table_spec.js index 12697654f3856703a8ec8ff7db29d05dbaf230ff..a651b71c27c687139b358e8988163ad6cdd34a25 100644 --- a/ee/spec/frontend/compliance_dashboard/components/projects_report/projects_table_spec.js +++ b/ee/spec/frontend/compliance_dashboard/components/projects_report/projects_table_spec.js @@ -76,8 +76,6 @@ describe('ProjectsTable component', () => { findTable().findAll('th > div').at(0).findComponent(GlFormCheckbox); const findSelectedRows = () => findTable().findAll('.b-table-row-selected'); - const isIndeterminate = (glFormCheckbox) => glFormCheckbox.vm.$attrs.indeterminate; - const selectRow = (index) => findTableRowData(index).at(0).trigger('click'); const getMockFrameworksGraphQl = (count = 2) => jest.fn().mockResolvedValue(createComplianceFrameworksReportResponse({ count, projects: 2 })); @@ -227,7 +225,7 @@ describe('ProjectsTable component', () => { it('renders indeterminate state when not all rows are selected', async () => { await selectRow(0); - expect(isIndeterminate(findSelectAllCheckbox())).toBe(true); + expect(findSelectAllCheckbox().props('indeterminate')).toBe(true); }); it('does not render indeterminate state when all rows are selected', async () => { @@ -236,7 +234,7 @@ describe('ProjectsTable component', () => { await selectRow(i); } - expect(isIndeterminate(findSelectAllCheckbox())).toBe(false); + expect(findSelectAllCheckbox().props('indeterminate')).toBe(false); }); it('renders checked state when all rows are selected', async () => { diff --git a/ee/spec/frontend/dependencies/components/__snapshots__/app_spec.js.snap b/ee/spec/frontend/dependencies/components/__snapshots__/app_spec.js.snap index 8127d4796c2e223db5de5cea8bb6b7f7fa72ed2b..f86c9886f97c73c192cd02e4ab7dfbf0ee743a28 100644 --- a/ee/spec/frontend/dependencies/components/__snapshots__/app_spec.js.snap +++ b/ee/spec/frontend/dependencies/components/__snapshots__/app_spec.js.snap @@ -6,6 +6,7 @@ exports[`DependenciesApp component on creation if project has no dependencies sh "contentClass": [], "description": null, "headerLevel": 2, + "illustrationName": null, "invertInDarkMode": true, "primaryButtonLink": null, "primaryButtonText": null, diff --git a/ee/spec/frontend/external_issues_show/components/sidebar/__snapshots__/assignee_spec.js.snap b/ee/spec/frontend/external_issues_show/components/sidebar/__snapshots__/assignee_spec.js.snap index f5ef2fe83d3db5829eb4a912801ea4f1c5f32368..7d8776d3d3c7d8e4b6e186ca7b6b47fdcaf5e9e3 100644 --- a/ee/spec/frontend/external_issues_show/components/sidebar/__snapshots__/assignee_spec.js.snap +++ b/ee/spec/frontend/external_issues_show/components/sidebar/__snapshots__/assignee_spec.js.snap @@ -18,6 +18,7 @@ exports[`ExternalIssuesSidebarAssignee with assignee template renders avatar com entity-name="Justin Ho" label="Justin Ho" labellink="" + labellinkattrs="[object Object]" size="32" src="http://127.0.0.1:3000/uploads/-/system/user/avatar/1/avatar.png?width=90" sublabellink="" diff --git a/ee/spec/frontend/incidents_settings/components/__snapshots__/service_level_agreement_form_spec.js.snap b/ee/spec/frontend/incidents_settings/components/__snapshots__/service_level_agreement_form_spec.js.snap index e865296b5e7632c5e5756107b409ba9c7a94355f..eb4c15e03a2ce7cc714566cb673a47fb39c45a38 100644 --- a/ee/spec/frontend/incidents_settings/components/__snapshots__/service_level_agreement_form_spec.js.snap +++ b/ee/spec/frontend/incidents_settings/components/__snapshots__/service_level_agreement_form_spec.js.snap @@ -17,7 +17,7 @@ exports[`Alert integration settings form should match the default snapshot 1`] = Activate "time to SLA" countdown timer @@ -35,7 +35,7 @@ exports[`Alert integration settings form should match the default snapshot 1`] = class="gl-flex gl-flex-row" > { expect(wrapper.findComponent(GlFormCheckbox).exists()).toBe(true); expect(findCheckbox(wrapper).exists()).toBe(true); - expect(findCheckbox(wrapper).vm.$attrs.checked).toBe(satisfied); + expect(findCheckbox(wrapper).props('checked')).toBe(satisfied); }, ); }); diff --git a/ee/spec/frontend/roles_and_permissions/components/manage_role/permissions_selector_spec.js b/ee/spec/frontend/roles_and_permissions/components/manage_role/permissions_selector_spec.js index 7c0839f55d365cb877a7058150186815ef0b1d44..224706f63744b757a003ce7937a5a823d8b60aff 100644 --- a/ee/spec/frontend/roles_and_permissions/components/manage_role/permissions_selector_spec.js +++ b/ee/spec/frontend/roles_and_permissions/components/manage_role/permissions_selector_spec.js @@ -47,7 +47,7 @@ describe('Permissions Selector component', () => { const findTable = () => wrapper.findComponent(GlTable); const findTableRow = (idx) => findTable().findAll('tbody > tr').at(idx); const findTableRowData = (idx) => findTableRow(idx).findAll('td'); - const findCheckboxes = () => wrapper.findAllByTestId('permission-checkbox'); + const findCheckbox = (idx) => findTableRow(idx).findComponent(GlFormCheckbox); const findToggleAllCheckbox = () => wrapper.findByTestId('permission-checkbox-all'); const findPermissionsSelectedMessage = () => wrapper.findByTestId('permissions-selected-message'); const findAlert = () => wrapper.findComponent(GlAlert); @@ -143,12 +143,13 @@ describe('Permissions Selector component', () => { notIncludedIndexes.forEach((i) => { expect(findTableRowData(i).at(1).text()).not.toContain('Added from'); - expect(findCheckboxes().at(i).attributes('disabled')).toBeUndefined(); + + expect(findCheckbox(i).props('disabled')).toBe(false); }); includedIndexes.forEach((i) => { expect(findTableRowData(i).at(1).text()).toContain('Added from Developer'); - expect(findCheckboxes().at(i).attributes('disabled')).toBeDefined(); + expect(findCheckbox(i).props('disabled')).toBe(true); }); }); diff --git a/ee/spec/frontend/security_configuration/dast_profiles/dast_site_profiles/components/dast_site_auth_section_spec.js b/ee/spec/frontend/security_configuration/dast_profiles/dast_site_profiles/components/dast_site_auth_section_spec.js index 03c68b2d655f4428d53a7e583493f05daaf0a67b..d7fb7418b6767ff93c5aec487f39aa37b60a54a6 100644 --- a/ee/spec/frontend/security_configuration/dast_profiles/dast_site_profiles/components/dast_site_auth_section_spec.js +++ b/ee/spec/frontend/security_configuration/dast_profiles/dast_site_profiles/components/dast_site_auth_section_spec.js @@ -57,14 +57,14 @@ describe('DastSiteAuthSection', () => { describe('authentication toggle', () => { it('is set false by default', () => { createComponent(); - expect(findAuthCheckbox().vm.$attrs.checked).toBe(false); + expect(findAuthCheckbox().props('checked')).toBe(false); }); it.each([true, false])( 'is set correctly when the "enabled" field is set to "%s"', (authEnabled) => { createComponent({ fields: { enabled: authEnabled } }); - expect(findAuthCheckbox().vm.$attrs.checked).toBe(authEnabled); + expect(findAuthCheckbox().props('checked')).toBe(authEnabled); }, ); diff --git a/ee/spec/frontend/security_dashboard/components/shared/vulnerability_report/vulnerability_list_spec.js b/ee/spec/frontend/security_dashboard/components/shared/vulnerability_report/vulnerability_list_spec.js index 3f1714415f79d5b9a1537452709656419ae1df73..70371d8bc93d318fdedfeed3d7e76670a5f57fd5 100644 --- a/ee/spec/frontend/security_dashboard/components/shared/vulnerability_report/vulnerability_list_spec.js +++ b/ee/spec/frontend/security_dashboard/components/shared/vulnerability_report/vulnerability_list_spec.js @@ -101,7 +101,7 @@ describe('Vulnerability list component', () => { const findDashboardHasNoVulnerabilities = () => wrapper.findComponent(DashboardHasNoVulnerabilities); const findVendorNames = () => wrapper.findByTestId('vulnerability-vendor'); - const findVulnerabilityCheckbox = () => wrapper.findByTestId('vulnerability-checkbox'); + const findVulnerabilityCheckbox = () => wrapper.findAllComponents(GlFormCheckbox).at(1); const findCheckAllCheckbox = () => wrapper.findByTestId('vulnerability-checkbox-all'); const findAllRowCheckboxes = () => wrapper.findAllByTestId('vulnerability-checkbox'); const findSkeletonLoading = () => wrapper.findAllComponents(GlSkeletonLoader); @@ -189,7 +189,7 @@ describe('Vulnerability list component', () => { }); it('should show the selection summary when a checkbox is selected', async () => { - await findVulnerabilityCheckbox().trigger('change'); + await findVulnerabilityCheckbox().vm.$emit('change'); expect(findSelectionSummary().props('visible')).toBe(true); }); @@ -212,7 +212,7 @@ describe('Vulnerability list component', () => { directives: {}, }); - await findVulnerabilityCheckbox().trigger('change'); + await findVulnerabilityCheckbox().vm.$emit('change'); expect(findSelectionSummary().props('selectedVulnerabilities')).toHaveLength(1); wrapper.setProps({ vulnerabilities: [] }); @@ -224,14 +224,14 @@ describe('Vulnerability list component', () => { it('should uncheck a selected vulnerability after the vulnerability is updated', async () => { const checkbox = () => findVulnerabilityCheckbox(); - await checkbox().trigger('change'); - expect(checkbox().element.checked).toBe(true); + await checkbox().vm.$emit('change'); + expect(checkbox().props('checked')).toBe(true); await nextTick(); findSelectionSummary().vm.$emit('vulnerabilities-updated', [newVulnerabilities[0].id]); await nextTick(); - expect(checkbox().element.checked).toBe(false); + expect(checkbox().props('checked')).toBe(false); }); }); @@ -577,8 +577,7 @@ describe('Vulnerability list component', () => { }); describe('row click', () => { - const findRowCheckbox = (index) => - findRow(index).find('[data-testid="vulnerability-checkbox"]'); + const findRowCheckbox = (index) => findRow(index).findComponent(GlFormCheckbox); beforeEach(() => { createWrapper({ props: { vulnerabilities } }); @@ -590,7 +589,7 @@ describe('Vulnerability list component', () => { const clickRows = () => rowsToClick.forEach((row) => findRow(row).trigger('click')); const expectRowCheckboxesToBe = (condition) => { for (let i = 0; i < rowCount; i += 1) - expect(findRowCheckbox(i).element.checked).toBe(condition(i)); + expect(findRowCheckbox(i).props('checked')).toBe(condition(i)); }; clickRows(); diff --git a/ee/spec/frontend/status_page_settings/__snapshots__/settings_form_spec.js.snap b/ee/spec/frontend/status_page_settings/__snapshots__/settings_form_spec.js.snap index 32d876fc165c8799a4d8516439298c6739003b66..62188240eb2cc564d7d48ff9e1332fb68b7a202e 100644 --- a/ee/spec/frontend/status_page_settings/__snapshots__/settings_form_spec.js.snap +++ b/ee/spec/frontend/status_page_settings/__snapshots__/settings_form_spec.js.snap @@ -82,7 +82,7 @@ exports[`Status Page settings form default state should match the default snapsh optionaltext="(optional)" > @@ -124,7 +124,7 @@ exports[`Status Page settings form default state should match the default snapsh optionaltext="(optional)" > @@ -145,7 +145,7 @@ exports[`Status Page settings form default state should match the default snapsh optionaltext="(optional)" > @@ -181,7 +181,7 @@ exports[`Status Page settings form default state should match the default snapsh optionaltext="(optional)" > diff --git a/package.json b/package.json index 52902ce0bd7acf3f1b4f674a0a1deaa98eb6d8db..42302eb9c8720d013f08b07d53140db1f7e3aabc 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "@gitlab/fonts": "^1.3.1", "@gitlab/query-language-rust": "0.20.6", "@gitlab/svgs": "3.146.0", - "@gitlab/ui": "120.0.0", + "@gitlab/ui": "122.3.0", "@gitlab/vue-router-vue3": "npm:vue-router@4.5.1", "@gitlab/vuex-vue3": "npm:vuex@4.1.0", "@gitlab/web-ide": "^0.0.1-dev-20250818141247", diff --git a/spec/frontend/admin/signup_restrictions/components/signup_checkbox_spec.js b/spec/frontend/admin/signup_restrictions/components/signup_checkbox_spec.js index 6e549dfe631f21b37862af18a39a41c6d21564e2..0dbd3cb1e28debc2a248ab309c6de31cf979ca00 100644 --- a/spec/frontend/admin/signup_restrictions/components/signup_checkbox_spec.js +++ b/spec/frontend/admin/signup_restrictions/components/signup_checkbox_spec.js @@ -43,7 +43,7 @@ describe('Signup Form', () => { describe('checkbox', () => { it('gets passed correct checked value', () => { - expect(findCheckbox().attributes('checked')).toBe('true'); + expect(findCheckbox().props('checked')).toBe(true); }); it('gets passed correct label', () => { @@ -55,12 +55,12 @@ describe('Signup Form', () => { }); it('gets passed data qa selector', () => { - expect(findCheckbox().attributes('data-testid')).toBe(props.dataTestId); + expect(findCheckbox().find('input').attributes('data-testid')).toBe(props.dataTestId); }); it('gets passed `disabled` property', () => { mountComponent({ disabled: true }); - expect(findCheckbox().attributes().disabled).toBe('true'); + expect(findCheckbox().props('disabled')).toBe(true); }); }); }); diff --git a/spec/frontend/alerts_settings/components/__snapshots__/alerts_form_spec.js.snap b/spec/frontend/alerts_settings/components/__snapshots__/alerts_form_spec.js.snap index dfbac5f7ef1c564b2d45b13bac911bf1a77fa246..4d2479499a4e707781ce84a7f4b89d1de3ef3f55 100644 --- a/spec/frontend/alerts_settings/components/__snapshots__/alerts_form_spec.js.snap +++ b/spec/frontend/alerts_settings/components/__snapshots__/alerts_form_spec.js.snap @@ -16,7 +16,7 @@ exports[`Alert integration settings form default state should match the default Create an incident. Incidents are created for each alert triggered. @@ -32,7 +32,7 @@ exports[`Alert integration settings form default state should match the default >