diff --git a/CHANGELOG.md b/CHANGELOG.md index e345c1b67..76cc6214c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [unreleased] +### Fixed +- Fix Vertical Slider regression [#479](https://github.com/plotly/dash/issues/479) ## [0.44.0] - 2019-03-04 ### Added diff --git a/src/components/Slider.react.js b/src/components/Slider.react.js index 9d415f355..28378ecba 100644 --- a/src/components/Slider.react.js +++ b/src/components/Slider.react.js @@ -18,7 +18,7 @@ export default class Slider extends Component { } render() { - const {id, setProps, updatemode, loading_state} = this.props; + const {id, loading_state, setProps, updatemode, vertical} = this.props; const {value} = this.state; return (
{ diff --git a/test/IntegrationTests.py b/test/IntegrationTests.py index 03dbac57f..55de61648 100644 --- a/test/IntegrationTests.py +++ b/test/IntegrationTests.py @@ -11,6 +11,7 @@ from selenium import webdriver from selenium.webdriver.chrome.options import Options +from selenium.webdriver.common.desired_capabilities import DesiredCapabilities class IntegrationTests(unittest.TestCase): @@ -20,11 +21,13 @@ def setUpClass(cls): super(IntegrationTests, cls).setUpClass() options = Options() + capabilities = DesiredCapabilities.CHROME + capabilities['loggingPrefs'] = {'browser': 'SEVERE'} if 'DASH_TEST_CHROMEPATH' in os.environ: options.binary_location = os.environ['DASH_TEST_CHROMEPATH'] - cls.driver = webdriver.Chrome(chrome_options=options) + cls.driver = webdriver.Chrome(options=options, desired_capabilities=capabilities) loader = percy.ResourceLoader( webdriver=cls.driver, base_url='/assets', @@ -47,7 +50,8 @@ def tearDown(self): requests.get('http://localhost:8050/stop') else: self.server_process.terminate() - self.driver.back() + + self.clear_log() time.sleep(1) def startServer(self, app): @@ -103,28 +107,15 @@ def _stop_server_windows(): # Visit the dash page self.driver.get('http://localhost:8050') - # Inject an error and warning logger - logger = ''' - window.tests = {}; - window.tests.console = {error: [], warn: [], log: []}; - - var _log = console.log; - var _warn = console.warn; - var _error = console.error; - - console.log = function() { - window.tests.console.log.push({method: 'log', arguments: arguments}); - return _log.apply(console, arguments); - }; - - console.warn = function() { - window.tests.console.warn.push({method: 'warn', arguments: arguments}); - return _warn.apply(console, arguments); - }; - - console.error = function() { - window.tests.console.error.push({method: 'error', arguments: arguments}); - return _error.apply(console, arguments); - }; - ''' - self.driver.execute_script(logger) + def clear_log(self): + entries = self.driver.get_log("browser") + + if entries: + self.last_timestamp = entries[-1]["timestamp"] + + def get_log(self): + entries = self.driver.get_log("browser") + + return [entry for entry in entries if entry["timestamp"] > self.last_timestamp] + + last_timestamp = 0 diff --git a/test/test_integration.py b/test/test_integration.py index d73ce6c55..3eca2dfc3 100644 --- a/test/test_integration.py +++ b/test/test_integration.py @@ -217,6 +217,34 @@ def test_upload_gallery(self): self.snapshot('test_upload_gallery') + def test_vertical_slider(self): + app = dash.Dash(__name__) + + app.layout = html.Div([ + html.Label('Vertical Slider'), + dcc.Slider( + id='vertical-slider', + min=0, + max=9, + marks={i: 'Label {}'.format(i) if i == 1 else str(i) + for i in range(1, 6)}, + value=5, + vertical=True, + ), + ], style={'height': '500px'}) + self.startServer(app) + + self.wait_for_element_by_css_selector('#vertical-slider') + self.snapshot('vertical slider') + + v_slider = self.driver.find_element_by_css_selector( + '#vertical-slider div[role="slider"]' + ) + v_slider.click() + + for entry in self.get_log(): + raise Exception('browser error logged during test', entry) + def test_gallery(self): app = dash.Dash(__name__)