/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; /* import-globals-from head.js */ // Test for following keyframe marker. // * element existence // * title // * and marginInlineStart style const KEYFRAMES_TEST_DATA = [ { targetClass: "multi-types", properties: [ { name: "background-color", expectedValues: [ { title: "rgb(255, 0, 0)", marginInlineStart: "0%", }, { title: "rgb(0, 255, 0)", marginInlineStart: "100%", }, ], }, { name: "background-repeat", expectedValues: [ { title: "space round", marginInlineStart: "0%", }, { title: "round space", marginInlineStart: "100%", }, ], }, { name: "font-size", expectedValues: [ { title: "10px", marginInlineStart: "0%", }, { title: "20px", marginInlineStart: "100%", }, ], }, { name: "margin-left", expectedValues: [ { title: "0px", marginInlineStart: "0%", }, { title: "100px", marginInlineStart: "100%", }, ], }, { name: "opacity", expectedValues: [ { title: "0", marginInlineStart: "0%", }, { title: "1", marginInlineStart: "100%", }, ], }, { name: "text-align", expectedValues: [ { title: "right", marginInlineStart: "0%", }, { title: "center", marginInlineStart: "100%", }, ], }, { name: "transform", expectedValues: [ { title: "translate(0px)", marginInlineStart: "0%", }, { title: "translate(100px)", marginInlineStart: "100%", }, ], }, ], }, { targetClass: "narrow-offsets", properties: [ { name: "opacity", expectedValues: [ { title: "0", marginInlineStart: "0%", }, { title: "1", marginInlineStart: "10%", }, { title: "0", marginInlineStart: "13%", }, { title: "1", marginInlineStart: "100%", }, ], }, ], }, { targetClass: "same-color", properties: [ { name: "background-color", expectedValues: [ { title: "rgb(0, 255, 0)", marginInlineStart: "0%", }, { title: "rgb(0, 255, 0)", marginInlineStart: "100%", }, ], }, ], }, { targetClass: "currentcolor", properties: [ { name: "background-color", expectedValues: [ { title: "currentcolor", marginInlineStart: "0%", }, { title: "rgb(0, 255, 0)", marginInlineStart: "100%", }, ], }, ], }, ]; /** * Do test for keyframes-graph_keyframe-marker-ltf/rtl. * * @param {Array} testData */ // eslint-disable-next-line no-unused-vars async function testKeyframesGraphKeyframesMarker() { await addTab(URL_ROOT + "doc_multi_keyframes.html"); await removeAnimatedElementsExcept( KEYFRAMES_TEST_DATA.map(t => `.${t.targetClass}`) ); const { animationInspector, panel } = await openAnimationInspector(); for (const { properties, targetClass } of KEYFRAMES_TEST_DATA) { info(`Checking keyframe marker for ${targetClass}`); const onDetailRendered = animationInspector.once( "animation-keyframes-rendered" ); await clickOnAnimationByTargetSelector( animationInspector, panel, `.${targetClass}` ); await onDetailRendered; for (const { name, expectedValues } of properties) { const testTarget = `${name} in ${targetClass}`; info(`Checking keyframe marker for ${testTarget}`); info(`Checking keyframe marker existence for ${testTarget}`); const markerEls = panel.querySelectorAll( `.${name} .keyframe-marker-item` ); is( markerEls.length, expectedValues.length, `Count of keyframe marker elements of ${testTarget} ` + `should be ${expectedValues.length}` ); for (let i = 0; i < expectedValues.length; i++) { const hintTarget = `.keyframe-marker-item[${i}] of ${testTarget}`; info(`Checking ${hintTarget}`); const markerEl = markerEls[i]; const expectedValue = expectedValues[i]; info(`Checking title in ${hintTarget}`); is( markerEl.getAttribute("title"), expectedValue.title, `title in ${hintTarget} should be ${expectedValue.title}` ); info(`Checking marginInlineStart style in ${hintTarget}`); is( markerEl.style.marginInlineStart, expectedValue.marginInlineStart, `marginInlineStart in ${hintTarget} should be ` + `${expectedValue.marginInlineStart}` ); } } } }