Skip to main content

library to compare HTML while ignoring non-functional differences

Project description

htmlcompare

A Python library to ensure two HTML documents are "equal". Currently the functionality is very limited but the idea is that the library should ignore differences automatically when these are not relevant for HTML semantics (e.g. <img style=""> should be the same as <img>.

Usage

import htmlcompare

diff = htmlcompare.compare('<div>', '<p>')
is_same = bool(diff)

To ease testing the library provides some helpers

from htmlcompare import assert_different_html, assert_same_html

assert_different_html('<br>', '<p>')
assert_same_html('<div />', '<div></div>')

Limitations / Plans

CSS is currently not validated. Later I hope to add CSS parsing using a real CSS parser like tinycss2 but right now the only support for CSS is that contents of <style> tags is completely ignored and that trailing ;s in style attributes are stripped.

No validation of conditional comments. Not sure which library I can use here but at some point I'll likely need this as well.

JavaScript - for obvious reasons it will be impossible to implement perfect JS comparison but it might be possible to run some kind of "beautifier" to take care of insignificant stylistic changes. However I don't need this feature so this is unlikely to get implemented (unless contributed by someone else).

Custom hooks could help adapting the comparison to your specific needs. However I don't know which API would be best so this will wait until there are real-world use cases.

Better API: The current API is very minimal and implements just what I needed right now. I hope to improve the API once I use this project in more complex scenarios.

Other projects

xmldiff is a well established project to compare two XML documents. However it seems as if the code does not contain knowledge about specific HTML semantics (e.g. CSS, empty attributes, insignificant attribute order).

Misc

The code is licensed under the MIT license. It supports Python 2.7 and Python 3.4+.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

HTMLCompare-0.2.1.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

HTMLCompare-0.2.1-py2.py3-none-any.whl (7.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file HTMLCompare-0.2.1.tar.gz.

File metadata

  • Download URL: HTMLCompare-0.2.1.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.4.2 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.8

File hashes

Hashes for HTMLCompare-0.2.1.tar.gz
Algorithm Hash digest
SHA256 2478dad790276f1aac9e0f334310a22e7bff1672f84fd2e9f1981121cd2f2e3a
MD5 8dba8b139385923021e5f002227e81de
BLAKE2b-256 2624517866f8fbdaaca259497baa380cab74feadfdb3b8afd0cb8347355bc3d1

See more details on using hashes here.

File details

Details for the file HTMLCompare-0.2.1-py2.py3-none-any.whl.

File metadata

  • Download URL: HTMLCompare-0.2.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.4.2 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.8

File hashes

Hashes for HTMLCompare-0.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8fa572c700f4fc2e279b367369ff0f7a2358656a987f483fc643d897e4809a03
MD5 67b8db96f211813b5ea9e0fa6afb3525
BLAKE2b-256 13fab658ee915a2d730ac4e887a4b098f59a8b15e92e0a57acc555384e1337de

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page