Spaces:
Sleeping
Sleeping
Alejadro Sanchez-Giraldo commited on
Commit ·
4190c8f
1
Parent(s): 185801a
add test framework and skin change on flag
Browse files- .gitignore +6 -1
- app.py +29 -0
- requirements.txt +3 -1
- test/test_chatbot.py +27 -0
.gitignore
CHANGED
|
@@ -2,4 +2,9 @@ myenv/
|
|
| 2 |
.DS_Store
|
| 3 |
.env
|
| 4 |
|
| 5 |
-
__pycache__/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
.DS_Store
|
| 3 |
.env
|
| 4 |
|
| 5 |
+
__pycache__/
|
| 6 |
+
.pytest_cache/
|
| 7 |
+
|
| 8 |
+
report.html
|
| 9 |
+
style.css
|
| 10 |
+
screenshots/
|
app.py
CHANGED
|
@@ -3,6 +3,8 @@ from transformers import pipeline
|
|
| 3 |
from ldclient import LDClient, Config, Context
|
| 4 |
import os
|
| 5 |
|
|
|
|
|
|
|
| 6 |
# Retrieve the LaunchDarkly SDK key from environment variables
|
| 7 |
ld_sdk_key = os.getenv("LAUNCHDARKLY_SDK_KEY")
|
| 8 |
|
|
@@ -21,6 +23,13 @@ def get_model_config(user_name):
|
|
| 21 |
model_id = flag_variation.get("modelID", "distilbert-base-uncased")
|
| 22 |
return model_id
|
| 23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 24 |
# Function to translate sentiment labels to user-friendly terms
|
| 25 |
def translate_label(label):
|
| 26 |
label_mapping = {
|
|
@@ -35,6 +44,26 @@ def translate_label(label):
|
|
| 35 |
}
|
| 36 |
return label_mapping.get(label, "Unknown")
|
| 37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
# Streamlit app
|
| 39 |
st.title("Sentiment Analysis Demo with AI Model Flags")
|
| 40 |
|
|
|
|
| 3 |
from ldclient import LDClient, Config, Context
|
| 4 |
import os
|
| 5 |
|
| 6 |
+
style = False
|
| 7 |
+
|
| 8 |
# Retrieve the LaunchDarkly SDK key from environment variables
|
| 9 |
ld_sdk_key = os.getenv("LAUNCHDARKLY_SDK_KEY")
|
| 10 |
|
|
|
|
| 23 |
model_id = flag_variation.get("modelID", "distilbert-base-uncased")
|
| 24 |
return model_id
|
| 25 |
|
| 26 |
+
# Function to get Style from LaunchDarkly
|
| 27 |
+
def get_style_config():
|
| 28 |
+
flag_key = "style"
|
| 29 |
+
style_context = Context.builder("context-key-style").build()
|
| 30 |
+
flag_variation = ld_client.variation(flag_key, style_context,default=False)
|
| 31 |
+
return flag_variation
|
| 32 |
+
|
| 33 |
# Function to translate sentiment labels to user-friendly terms
|
| 34 |
def translate_label(label):
|
| 35 |
label_mapping = {
|
|
|
|
| 44 |
}
|
| 45 |
return label_mapping.get(label, "Unknown")
|
| 46 |
|
| 47 |
+
style = get_style_config()
|
| 48 |
+
|
| 49 |
+
# popup with the styel value
|
| 50 |
+
st.write(f"Style: {style}")
|
| 51 |
+
|
| 52 |
+
if style:
|
| 53 |
+
custom_css = """
|
| 54 |
+
<style>
|
| 55 |
+
html, body {
|
| 56 |
+
height: 100%;
|
| 57 |
+
}
|
| 58 |
+
.main{
|
| 59 |
+
background: green;
|
| 60 |
+
}
|
| 61 |
+
</style>
|
| 62 |
+
"""
|
| 63 |
+
st.markdown(custom_css, unsafe_allow_html=True)
|
| 64 |
+
else:
|
| 65 |
+
cust_css = ""
|
| 66 |
+
|
| 67 |
# Streamlit app
|
| 68 |
st.title("Sentiment Analysis Demo with AI Model Flags")
|
| 69 |
|
requirements.txt
CHANGED
|
@@ -4,4 +4,6 @@ launchdarkly-server-sdk
|
|
| 4 |
torch
|
| 5 |
Flask
|
| 6 |
datasets
|
| 7 |
-
gunicorn
|
|
|
|
|
|
|
|
|
| 4 |
torch
|
| 5 |
Flask
|
| 6 |
datasets
|
| 7 |
+
gunicorn
|
| 8 |
+
pytest-playwright
|
| 9 |
+
pytest-html
|
test/test_chatbot.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import re
|
| 2 |
+
from playwright.sync_api import Page, expect, Browser
|
| 3 |
+
|
| 4 |
+
def test_has_title(page: Page):
|
| 5 |
+
page.goto("http://localhost:8501")
|
| 6 |
+
|
| 7 |
+
# Expect a title "to contain" a substring.
|
| 8 |
+
expect(page).to_have_title(re.compile("app"))
|
| 9 |
+
|
| 10 |
+
def test_get_started_link(browser: Browser):
|
| 11 |
+
|
| 12 |
+
for _ in range(30):
|
| 13 |
+
# create a new incognito browser context
|
| 14 |
+
context = browser.new_context()
|
| 15 |
+
# create a new page inside context.
|
| 16 |
+
page = context.new_page()
|
| 17 |
+
# clear cache
|
| 18 |
+
page.context.clear_cookies()
|
| 19 |
+
page.goto("http://localhost:8501")
|
| 20 |
+
|
| 21 |
+
# expect Sentiment Analysis Demo with AI Model Flags
|
| 22 |
+
locator = page.locator('.main')
|
| 23 |
+
expect(locator).to_contain_text("Sentiment Analysis Demo with AI Model Flags")
|
| 24 |
+
# screenshot
|
| 25 |
+
page.screenshot(path=f"test_get_started_link{_}.png")
|
| 26 |
+
# dispose context once it is no longer needed.
|
| 27 |
+
context.close()
|