{ "info": { "author": "Michael Clawar, Eric Linden", "author_email": "tech@stratodem.com", "bugtrack_url": null, "classifiers": [], "description": "\n# dash-snapshot-testing\nUse snapshot testing, inspired by Jest snapshot testing, to test [Dash][] components.\n\nSee the project [README](https://github.com/StratoDem/dash-snapshot-testing/blob/master/README.md) for more detailed information.\n\n## Inspiration\nTesting a long HTML component output for a Dash application is difficult.\nIt typically requires hardcoding data or setting up a dummy database.\nUsing snapshot tests that JSON serialize the Dash component output provide another\neasy testing layer to ensure that code refactors/changes do not change the\noutput unexpectedly.\n\nTo learn more about snapshot testing in general, see a much more elaborate explanation from the [Facebook Jest site](https://facebook.github.io/jest/docs/en/snapshot-testing.html)\n\n## Installation and usage\n```bash\n$ pip install dash-snapshot-testing\n```\n\n```python\nimport dash_html_components as html\n\nfrom dash_snapshot_testing.snapshot_test import DashSnapshotTestCase\n\n\nclass MyUnitTestCase(DashSnapshotTestCase):\n def test_component(self):\n my_component = html.Div([html.P('wow'), html.Span('this works')], id='test-id')\n\n self.assertSnapshotEqual(my_component, 'my-test-unique-id')\n```\n\nThis outputs/checks this JSON at `__snapshots__/MyUnitTestCase-my-test-unique-id.json`:\n```json\n{\n \"type\": \"Div\",\n \"props\": {\n \"id\": \"test-id\",\n \"children\": [\n {\n \"type\": \"P\",\n \"props\": {\"children\": \"wow\"},\n \"namespace\": \"dash_html_components\"\n },\n {\n \"type\": \"Span\",\n \"props\": {\"children\": \"this works\"},\n \"namespace\": \"dash_html_components\"\n }\n ]\n },\n \"namespace\": \"dash_html_components\"\n}\n```\n\n### Setting a custom `snapshots_dir` for the class\n```python\nclass MyOtherUnitTestCase(DashSnapshotTestCase):\n snapshots_dir = '__snapshots_2__'\n\n def test_component(self):\n my_component = html.Div([html.P('wow'), html.Span('another one')], id='test-id')\n\n self.assertSnapshotEqual(my_component, 'my-test-unique-id')\n```\n\nThis outputs/checks this JSON at `__snapshots_2__/MyOtherUnitTestCase-my-test-unique-id.json`:\n```json\n{\n \"type\": \"Div\",\n \"props\": {\n \"id\": \"test-id\",\n \"children\": [\n {\n \"type\": \"P\",\n \"props\": {\"children\": \"wow\"},\n \"namespace\": \"dash_html_components\"\n },\n {\n \"type\": \"Span\",\n \"props\": {\"children\": \"another one\"},\n \"namespace\": \"dash_html_components\"\n }\n ]\n },\n \"namespace\": \"dash_html_components\"\n}\n```\n\n### Overwriting snapshots\nTo overwrite pre-existing snapshots, [like in Jest](https://facebook.github.io/jest/docs/en/snapshot-testing.html#updating-snapshots), set an environment variable as `UPDATE_DASH_SNAPSHOTS=TRUE`:\n```bash\n# This will run and make new snapshots\n> UPDATE_DASH_SNAPSHOTS=TRUE python -m unittest my_test_module\n# This will run against the previous snapshots\n> python -m unittest my_test_module\n```\n\n### How this works\nAt its core, this `unittest.TestCase` compares a JSON-serialized Dash component\nagainst a previously stored JSON-serialized Dash component, and checks if the `dict`\nobjects from `json.loads` are equivalent using `assertEqual`.\n\n[Dash]: https://github.com/plotly/dash \n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/StratoDem/dash-snapshot-testing", "keywords": "dash snapshot plotly testing unittest", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dash-snapshot-testing", "package_url": "https://pypi.org/project/dash-snapshot-testing/", "platform": "", "project_url": "https://pypi.org/project/dash-snapshot-testing/", "project_urls": { "Homepage": "https://github.com/StratoDem/dash-snapshot-testing" }, "release_url": "https://pypi.org/project/dash-snapshot-testing/1.2.2/", "requires_dist": [ "dash (>=0.19.0)", "plotly (>=2.2.3)" ], "requires_python": ">=3", "summary": "Dash snapshot testing package", "version": "1.2.2" }, "last_serial": 3865214, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "1aee61b652fb33f996361b2f0e47e3a1", "sha256": "fbfcb70c11e4dc2abf57c5613b56df30770e6465dd3cb2633e59b60f27150568" }, "downloads": -1, "filename": "dash_snapshot_testing-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1aee61b652fb33f996361b2f0e47e3a1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 3868, "upload_time": "2018-03-27T13:43:37", "url": "https://files.pythonhosted.org/packages/2c/39/ab63c06b8781047c2ac819651232e6cbe81ef45bdc330197ae4cd2eb4129/dash_snapshot_testing-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "551d526a1300badf051288ab76b258a6", "sha256": "74adb68895f762ffcf3946a3735248f85990529e64df1dfe8b92aa661561337b" }, "downloads": -1, "filename": "dash_snapshot_testing-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "551d526a1300badf051288ab76b258a6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 3864, "upload_time": "2018-03-27T13:43:38", "url": "https://files.pythonhosted.org/packages/7a/7c/790f384776d48c60d230bccb94008eef5ad45a2025413e95df32bc0f9208/dash_snapshot_testing-1.0.1-py3-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "db61c6a40e19a463cac829fbce916a3b", "sha256": "878b0c5bbc8e13cc829d5c7c25cb95578177fe4cce77ff96bbbaf6e41150570f" }, "downloads": -1, "filename": "dash_snapshot_testing-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "db61c6a40e19a463cac829fbce916a3b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 4012, "upload_time": "2018-04-20T21:37:32", "url": "https://files.pythonhosted.org/packages/08/24/2038f398de6e42a13661fc0bb6fc73ffd4b23adb63a38f54ebf1aa91034e/dash_snapshot_testing-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "790829f15c71e11a6b9b4ab6b7ec9eb9", "sha256": "5834ed04154808b07567433805199bd748a753118a4e5e78e2c08b9ac1cca722" }, "downloads": -1, "filename": "dash_snapshot_testing-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "790829f15c71e11a6b9b4ab6b7ec9eb9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 4008, "upload_time": "2018-04-20T21:37:33", "url": "https://files.pythonhosted.org/packages/67/7d/6c1877b4a0ac39dfd39fc47917ad362d19de8c7571f6fd61ca2b00c414c4/dash_snapshot_testing-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "178133e93d0641c3418e8ba197e6c46a", "sha256": "c737ac8e4a4154a52e4afafa818524a4c40f9ca07c1535e953282939e161fd8c" }, "downloads": -1, "filename": "dash-snapshot-testing-1.1.0.tar.gz", "has_sig": false, "md5_digest": "178133e93d0641c3418e8ba197e6c46a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3287, "upload_time": "2018-04-20T21:37:34", "url": "https://files.pythonhosted.org/packages/4b/82/36590530af6abf833a1e535368394311e6a1ad0fdcc27e3468c6397487f2/dash-snapshot-testing-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "2e457e8261c24e0f7222181e91761460", "sha256": "92b6fa6bbe7399ba9acfeed4ee054434625632f69dd3d1b7eee501601864dd46" }, "downloads": -1, "filename": "dash_snapshot_testing-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2e457e8261c24e0f7222181e91761460", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 4552, "upload_time": "2018-05-15T15:59:16", "url": "https://files.pythonhosted.org/packages/88/9b/a420984960dbe461eb514d7172103325563d25ffa55e1c50caa13ba8558f/dash_snapshot_testing-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ed791f9941748ef400f658a150ea9e2", "sha256": "6d8dc523b0c76da654cdf6803b6ce2b7c526859806fe3f8a123a947f898963ee" }, "downloads": -1, "filename": "dash_snapshot_testing-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4ed791f9941748ef400f658a150ea9e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 4548, "upload_time": "2018-05-15T15:59:17", "url": "https://files.pythonhosted.org/packages/3f/7d/3faaea69b87e2bf6b59f9610365fe0ae3282b2f6f664ed5c4ea6e72eab37/dash_snapshot_testing-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d3a7949db5ff45b5a7d2f5e744c5fbd", "sha256": "e6d4bdfe76845c122978d81c44487e6ee276310c8d5cc4c7fd9541e0552e2405" }, "downloads": -1, "filename": "dash-snapshot-testing-1.2.0.tar.gz", "has_sig": false, "md5_digest": "0d3a7949db5ff45b5a7d2f5e744c5fbd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3818, "upload_time": "2018-05-15T15:59:18", "url": "https://files.pythonhosted.org/packages/3b/45/1fb1672c9e466f58d32b1da99dc0c1abd15845d0f31ac3b0401ac4363647/dash-snapshot-testing-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "28b8ddc346c7d875951c64d2f530869e", "sha256": "921edcacf56de096dbfbf56639ba37cc4e23462264be3ba6823c398459903956" }, "downloads": -1, "filename": "dash_snapshot_testing-1.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "28b8ddc346c7d875951c64d2f530869e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 6728, "upload_time": "2018-05-15T16:09:40", "url": "https://files.pythonhosted.org/packages/ae/1f/b1d2e836f59cd7775a2ef7bd0de742c4a35c8e771a4504ebf311b33dc63e/dash_snapshot_testing-1.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd48ab619d4c279ba659a88c9a4c193d", "sha256": "e87c2139743227a5b139bc4c8ab40bf6410ae6504d746fd1c94f34cabeb6bb7a" }, "downloads": -1, "filename": "dash_snapshot_testing-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "cd48ab619d4c279ba659a88c9a4c193d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6723, "upload_time": "2018-05-15T16:09:41", "url": "https://files.pythonhosted.org/packages/03/ad/c641a7dfa2dadc2e8b652073fe6a1f10291a68bdcb6ee360bd83037fff74/dash_snapshot_testing-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0f0a3d488264e883c630fa6db80334a", "sha256": "9b2ef2d85c724bc340aeb18aff52f11595ee846bf1f713ea1220049488c253ff" }, "downloads": -1, "filename": "dash-snapshot-testing-1.2.1.tar.gz", "has_sig": false, "md5_digest": "d0f0a3d488264e883c630fa6db80334a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4216, "upload_time": "2018-05-15T16:09:43", "url": "https://files.pythonhosted.org/packages/e7/2a/446655e3329b5d2af08dacd817cf7c8bdd7963729bf8db14d5857b6c952e/dash-snapshot-testing-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "3212a4301274df25ced438fb5dc95001", "sha256": "b8b3a4e7399ac85cd15a458b920a5f98f1ea2cbc00c844a410ad122226db9005" }, "downloads": -1, "filename": "dash_snapshot_testing-1.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3212a4301274df25ced438fb5dc95001", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 6730, "upload_time": "2018-05-15T16:12:37", "url": "https://files.pythonhosted.org/packages/6a/a4/8adbf6a17893dbfc84a6c1f821f7ebd39cd4bb2f2cf03369fab1ca6354cb/dash_snapshot_testing-1.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c69640df8fc76f0e23b10bca0779bdc4", "sha256": "243fa0ee62da8a6ec5de5f8a842c50f8943bfa5dc0994080053e2352984d2be0" }, "downloads": -1, "filename": "dash_snapshot_testing-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c69640df8fc76f0e23b10bca0779bdc4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6727, "upload_time": "2018-05-15T16:12:38", "url": "https://files.pythonhosted.org/packages/76/93/94fbcdd706489df30937e7caf0f2b089f75d69f31bba3bb0e144a4e0c934/dash_snapshot_testing-1.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed5582f03eb7e2d10e4a04a255061c71", "sha256": "16118087b57aba66053fd98c493161bc50a75ffcf9d3fa4747d5bf9e36be3585" }, "downloads": -1, "filename": "dash-snapshot-testing-1.2.2.tar.gz", "has_sig": false, "md5_digest": "ed5582f03eb7e2d10e4a04a255061c71", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4227, "upload_time": "2018-05-15T16:12:40", "url": "https://files.pythonhosted.org/packages/7a/f2/3b0b0a7c35074be081f65c771d4e6568f14d7b0999208de3aa34e06a3de9/dash-snapshot-testing-1.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3212a4301274df25ced438fb5dc95001", "sha256": "b8b3a4e7399ac85cd15a458b920a5f98f1ea2cbc00c844a410ad122226db9005" }, "downloads": -1, "filename": "dash_snapshot_testing-1.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3212a4301274df25ced438fb5dc95001", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 6730, "upload_time": "2018-05-15T16:12:37", "url": "https://files.pythonhosted.org/packages/6a/a4/8adbf6a17893dbfc84a6c1f821f7ebd39cd4bb2f2cf03369fab1ca6354cb/dash_snapshot_testing-1.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c69640df8fc76f0e23b10bca0779bdc4", "sha256": "243fa0ee62da8a6ec5de5f8a842c50f8943bfa5dc0994080053e2352984d2be0" }, "downloads": -1, "filename": "dash_snapshot_testing-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c69640df8fc76f0e23b10bca0779bdc4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6727, "upload_time": "2018-05-15T16:12:38", "url": "https://files.pythonhosted.org/packages/76/93/94fbcdd706489df30937e7caf0f2b089f75d69f31bba3bb0e144a4e0c934/dash_snapshot_testing-1.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed5582f03eb7e2d10e4a04a255061c71", "sha256": "16118087b57aba66053fd98c493161bc50a75ffcf9d3fa4747d5bf9e36be3585" }, "downloads": -1, "filename": "dash-snapshot-testing-1.2.2.tar.gz", "has_sig": false, "md5_digest": "ed5582f03eb7e2d10e4a04a255061c71", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4227, "upload_time": "2018-05-15T16:12:40", "url": "https://files.pythonhosted.org/packages/7a/f2/3b0b0a7c35074be081f65c771d4e6568f14d7b0999208de3aa34e06a3de9/dash-snapshot-testing-1.2.2.tar.gz" } ] }