Skip to content

Commit fe4162b

Browse files
authored
feat: Allow label selector to be undefined (#84)
1 parent 8389baa commit fe4162b

File tree

6 files changed

+34
-6
lines changed

6 files changed

+34
-6
lines changed

src/internal/analytics-metadata/__tests__/components.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,13 @@ export const ComponentThree = () => (
4747
<div {...getAnalyticsMetadataAttribute({ component: { name: 'ComponentThree' } })}>
4848
<div
4949
{...getAnalyticsMetadataAttribute({
50-
component: { innerContext: { position: '2', columnLabel: { selector: '.invalid-selector', root: 'self' } } },
50+
component: {
51+
innerContext: {
52+
position: '2',
53+
columnLabel: { selector: '.invalid-selector', root: 'self' },
54+
anotherLabel: { root: 'self' },
55+
},
56+
},
5157
})}
5258
>
5359
<ComponentTwo />

src/internal/analytics-metadata/__tests__/labels-utils.test.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,15 @@ describe('processLabel', () => {
145145
expect(processLabel(target, '')).toEqual('content');
146146
expect(processLabel(target, { selector: '' })).toEqual('content');
147147
});
148+
test('returns node label when selector is undefined and has root="self" ', () => {
149+
const { container } = render(
150+
<div>
151+
<div id="target">content</div>
152+
</div>
153+
);
154+
const target = container.querySelector('#target') as HTMLElement;
155+
expect(processLabel(target, { root: 'self' })).toEqual('content');
156+
});
148157
test('returns node label when selector is a chain', () => {
149158
const { container } = render(
150159
<div>

src/internal/analytics-metadata/__tests__/testing-utils.test.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ describe('getRawAnalyticsMetadata', () => {
5656
selector: '.invalid-selector',
5757
root: 'self',
5858
},
59+
anotherLabel: {
60+
root: 'self',
61+
},
5962
},
6063
},
6164
},

src/internal/analytics-metadata/__tests__/utils.test.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,14 @@ describe('getGeneratedAnalyticsMetadata', () => {
6464
},
6565
{
6666
type: 'component',
67-
detail: { name: 'ComponentThree', innerContext: { position: '2', columnLabel: '' } },
67+
detail: {
68+
name: 'ComponentThree',
69+
innerContext: {
70+
position: '2',
71+
columnLabel: '',
72+
anotherLabel: 'sub labelanother text content to ignorecontentcomponent labelevent label',
73+
},
74+
},
6875
},
6976
],
7077
});

src/internal/analytics-metadata/interfaces.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ interface GeneratedAnalyticsMetadataComponentContext {
3535
}
3636

3737
export interface LabelIdentifier {
38-
selector: string | Array<string>;
38+
selector?: string | Array<string>;
3939
root?: 'component' | 'self';
4040
}
4141

src/internal/analytics-metadata/testing-utils.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,11 @@ const getLabelSelectors = (localMetadata: any): Array<string> => {
4646
const getLabelSelectorsFromLabelIdentifier = (label: string | LabelIdentifier): Array<string> => {
4747
if (typeof label === 'string') {
4848
return [label];
49-
} else if (typeof label.selector === 'string') {
50-
return [label.selector];
49+
} else if (label.selector) {
50+
if (typeof label.selector === 'string') {
51+
return [label.selector];
52+
}
53+
return label.selector;
5154
}
52-
return label.selector;
55+
return [];
5356
};

0 commit comments

Comments
 (0)