How to add HTML Extras that contain a <script> tag (and allow that script to be executed)?
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- javascript, python
Direzione di ricerca
Riproduci la demo minima dell'issue, quindi esamina src/pytest_html/scripts/dom.js in corrispondenza della gestione di format_type === 'html' e del percorso di rendering di data-jsonblob. Confronta il comportamento attuale di inserimento con l'esperimento createRange descritto nell'issue. Il lavoro è completato quando gli extra HTML contenenti tag script vengono gestiti come previsto al caricamento del report, senza esecuzioni ripetute involontarie quando le righe vengono espanse o compresse.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I'm trying to do similar to https://github.com/pytest-dev/pytest-html/issues/931 but I think I've worked out the general case - is there a way we can add extra HTML code that contains script tags, such that the script can be executed?
Minimum viable demo:
import pytest_html
def test_demo(extras):
extras.append(pytest_html.extras.html('Before'))
extras.append(pytest_html.extras.html('<script>alert("Hello, World!");</script>'))
extras.append(pytest_html.extras.html('After'))
When you load in a web browser, you'll find the <script> tag added between 'Before' and 'After'. However, if you open report.html in a text editor, you find that it isn't inserted into the raw HTML, but rather it's encoded data as part of the data-jsonblob property of <div id="data-container" data-jsonblob="..."> - i.e. the <script> doesn't get executed, because it's inserted dynamically. It appears this is understood behaviour
A bit of experimentation suggested that the createRange method documented here would work, with the disadvantage that the script seems to be executed whenever the row is expanded or collapsed. I achieved this by replacing these lines
if (format_type === 'html') {
resultBody.querySelector('.extraHTML').insertAdjacentHTML('beforeend', `<div>${content}</div>`)
}
with
if (format_type === 'html') {
const range = document.createRange()
const fragment = range.createContextualFragment(content)
resultBody.querySelector('.extraHTML').appendChild(fragment)
}
This isn't necessarily the best way to fix this though.
- Lingua principale
- Python
- Stelle
- 779
- Fork
- 261
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di pytest-dev/pytest-html
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
pytest-dev/pytest-html#1077 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
pytest-dev/pytest-html#1039 ·
-
Feature: pluggable HTML themes via Jinja2 template inheritanceForse già presa @RonnyPfannschmidt l’ha presa 136 giorni fa. Aperta
pytest-dev/pytest-html#1029 · 1 reazione · 1 assegnatario ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
pytest-dev/pytest-html#1027 ·
-
pytest-html does not escape HTML in testId (v4.2.0)Forse già presa @golikovichev l’ha presa 120 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
pytest-dev/pytest-html#1024 ·
Tutte le issue di pytest-dev/pytest-html
Issue simili
-
changelog investigate
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
ramnes/notion-sdk-py#409 ·
-
good first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
lindicaphxag-tech/kaggle#28 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
BSData/horus-heresy-3rd-edition#3211 ·
I maintainer di solito rispondono entro 1 giorno
-
bug needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
bug tests
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno