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__)