8
8
9
9
import { clickElementAtPoint , getElement , Point } from '../../cdk/testing/private/e2e' ;
10
10
import { Thumb } from '@material/slider' ;
11
- import { browser , by , element , ElementFinder } from 'protractor' ;
11
+ import { $ , browser , by , element , ElementFinder } from 'protractor' ;
12
+ import { logging } from 'selenium-webdriver' ;
12
13
13
14
describe ( 'MDC-based MatSlider' , ( ) => {
14
15
const getStandardSlider = ( ) => element ( by . id ( 'standard-slider' ) ) ;
@@ -32,6 +33,29 @@ describe('MDC-based MatSlider', () => {
32
33
await slideToValue ( slider , 35 , Thumb . END ) ;
33
34
expect ( await getSliderValue ( slider , Thumb . END ) ) . toBe ( 35 ) ;
34
35
} ) ;
36
+
37
+ it ( 'should display the value indicator when focused' , async ( ) => {
38
+ await focusSliderThumb ( slider , Thumb . END ) ;
39
+ const rect : DOMRect = await browser . executeScript (
40
+ 'return arguments[0].getBoundingClientRect();' ,
41
+ $ ( '.mdc-slider__value-indicator' ) ,
42
+ ) ;
43
+
44
+ expect ( rect . width ) . not . toBe ( 0 ) ;
45
+ expect ( rect . height ) . not . toBe ( 0 ) ;
46
+
47
+ await browser . actions ( ) . mouseUp ( ) . perform ( ) ;
48
+ } ) ;
49
+
50
+ it ( 'should not cause passive event listener errors when changing the value' , async ( ) => {
51
+ // retrieving the logs clears the collection
52
+ await browser . manage ( ) . logs ( ) . get ( 'browser' ) ;
53
+ await setValueByClick ( slider , 15 ) ;
54
+
55
+ expect ( await browser . manage ( ) . logs ( ) . get ( 'browser' ) ) . not . toContain (
56
+ jasmine . objectContaining ( { level : logging . Level . SEVERE } ) ,
57
+ ) ;
58
+ } ) ;
35
59
} ) ;
36
60
37
61
describe ( 'disabled slider' , async ( ) => {
@@ -96,6 +120,13 @@ async function getSliderValue(slider: ElementFinder, thumbPosition: Thumb): Prom
96
120
: Number ( await inputs [ 0 ] . getAttribute ( 'value' ) ) ;
97
121
}
98
122
123
+ /** Focuses on the MatSlider at the coordinates corresponding to the given thumb. */
124
+ async function focusSliderThumb ( slider : ElementFinder , thumbPosition : Thumb ) : Promise < void > {
125
+ const webElement = await getElement ( slider ) . getWebElement ( ) ;
126
+ const coords = await getCoordsForValue ( slider , await getSliderValue ( slider , thumbPosition ) ) ;
127
+ return await browser . actions ( ) . mouseMove ( webElement , coords ) . mouseDown ( ) . perform ( ) ;
128
+ }
129
+
99
130
/** Clicks on the MatSlider at the coordinates corresponding to the given value. */
100
131
async function setValueByClick ( slider : ElementFinder , value : number ) : Promise < void > {
101
132
return clickElementAtPoint ( slider , await getCoordsForValue ( slider , value ) ) ;
0 commit comments