diff --git a/tests/ui/perfherder/legend_card_test.jsx b/tests/ui/perfherder/legend_card_test.jsx
new file mode 100644
index 000000000..5f9384176
--- /dev/null
+++ b/tests/ui/perfherder/legend_card_test.jsx
@@ -0,0 +1,75 @@
+import React from 'react';
+import { cleanup, render, waitForElement } from '@testing-library/react';
+
+import LegendCard from '../../../ui/perfherder/graphs/LegendCard';
+import { legendCardText } from '../../../ui/perfherder/constants';
+
+const testData = [
+ {
+ color: ['brown', '#b87e17'],
+ data: [],
+ framework_id: 1,
+ id: 'mozilla-central ts_paint_flex opt e10s stylo',
+ lowerIsBetter: true,
+ name: 'ts_paint_flex opt e10s stylo',
+ parentSignature: null,
+ platform: 'linux64',
+ projectId: 1,
+ repository_name: 'mozilla-central',
+ resultSetData: [],
+ signatureHash: '9c0028a9c871b51c8296485c8fc09b21fe41eec0',
+ signature_id: 1647493,
+ visible: true,
+ },
+ {
+ color: ['darkorchid', '#9932cc'],
+ data: [],
+ framework_id: 13,
+ id: 'mozilla-central raptor-tp6-amazon-firefox opt',
+ lowerIsBetter: true,
+ name: 'raptor-tp6-amazon-firefox opt ',
+ parentSignature: null,
+ platform: 'linux64',
+ projectId: 1,
+ repository_name: 'mozilla-central',
+ resultSetData: [],
+ signatureHash: '554cc85b904ede676c691b65bbe19911c7320718',
+ signature_id: 2146210,
+ visible: true,
+ },
+];
+
+const colors = [
+ ['darkorchid', '#9932cc'],
+ ['blue', '#1752b8'],
+];
+
+const legendCard = (series, testData) =>
+ render(
+ {}}
+ updateStateParams={() => {}}
+ colors={colors}
+ />,
+ );
+
+afterEach(cleanup);
+
+test('legend card displays the framework badge', async () => {
+ const { queryByText } = legendCard(testData[0], testData);
+
+ const frameworkBadge = await waitForElement(() => queryByText('talos'));
+ expect(frameworkBadge).toBeInTheDocument();
+});
+
+test('legend card with incorrect framework displays the unknown framework badge message', async () => {
+ const { queryByText } = legendCard(testData[1], testData);
+
+ const frameworkBadge = await waitForElement(() =>
+ queryByText(legendCardText.unknownFrameworkMessage),
+ );
+ expect(frameworkBadge).toBeInTheDocument();
+});
diff --git a/ui/perfherder/constants.js b/ui/perfherder/constants.js
index dbf242aa0..a0f4aa51c 100644
--- a/ui/perfherder/constants.js
+++ b/ui/perfherder/constants.js
@@ -19,6 +19,10 @@ export const filterText = {
inputPlaceholder: 'filter text e.g. linux tp5o',
};
+export const legendCardText = {
+ unknownFrameworkMessage: 'unknown framework',
+};
+
export const selectorCardText = {
invalidRevision: 'Invalid revision',
invalidRevisionLength: 'Revision must be at least 40 characters',
diff --git a/ui/perfherder/graphs/LegendCard.jsx b/ui/perfherder/graphs/LegendCard.jsx
index 5d161f86c..bc7d04eaa 100644
--- a/ui/perfherder/graphs/LegendCard.jsx
+++ b/ui/perfherder/graphs/LegendCard.jsx
@@ -3,16 +3,19 @@
import React from 'react';
import PropTypes from 'prop-types';
-import { FormGroup, Input } from 'reactstrap';
+import { Badge, FormGroup, Input } from 'reactstrap';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faTimes } from '@fortawesome/free-solid-svg-icons';
+import { legendCardText } from '../constants';
+
const LegendCard = ({
series,
testData,
updateState,
updateStateParams,
selectedDataPoint,
+ frameworks,
colors,
}) => {
const updateSelectedTest = () => {
@@ -86,6 +89,10 @@ const LegendCard = ({
resetParams(newData);
};
+ const getFrameworkName = frameworkId => {
+ const framework = frameworks.find(item => item.id === frameworkId);
+ return framework ? framework.name : legendCardText.unknownFrameworkMessage;
+ };
const subtitleStyle = 'p-0 mb-0 border-0 text-secondary text-left';
return (
@@ -125,10 +132,8 @@ const LegendCard = ({
>
{series.platform}
- {`${series.signatureHash.slice(
- 0,
- 16,
- )}...`}
+ {getFrameworkName(series.framework_id)}
+ {`${series.signatureHash.slice(0, 16)}...`}