RiotJS and headless webkit - unit-testing

Currently using RiotJS and Mocha for unit testing. Was wanting to know if I can use a headless browser webkit like PhantomJS & CasperJS to do additional tests on my RiotJS tags/pages. Up to now all my attempts to load the tags/pages and perform queries on the document have failed. Would appreciate any samples/links.
Thanks
Updated:
querySelector fails for '#testId', but succeeds for 'testId2'.
Extract from my unit test:
page.open('http://localhost/src/default.html', function (status) {
var test = document.querySelector("#testId"); // returns undefined
}
<!-- html page -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Riot.js Example</title>
</head>
<body>
<!-- mount points -->
<spinner data-url="./data.json" data-sourceId="instance1" data-model="myModel" id="testId"></spinner>
<imageoutput data-sourceId="instance1" data-model="myModel"></imageoutput>
<div id="testId2">this content</div>
<!-- mount the same way -->
<!--[if lt IE 9]>
<script src="../dist/scripts/es5-shim.js"></script>
<script src="ie-stuff.js"></script>
<![endif]-->
<script src="../dist/scripts/require.js" data-main="./main"></script>
</body>
</html>

Patrick,
It would be nice you better specify which test objectives you want to do, what to do on each page to see if the CasperJS / PhantomJS realize do it!
The CasperJS, working with the PhantomJS can work independently and I confess that today, any automation project pages or testing, I use them only and give the trick!
For a layout test (images, fonts, CSS), you can study the PhantomCSS, but if your goal is to navigate, click, test elements and even download archive (assuming avoid URLs with Silverlight, Java ... the CasperJS will give account to do anything you want ... and the returns you can get at log.xml to treat it in any other tool or system.
I'm finishing my new site and it, post several tutorials and tips regarding the CasperJS and PhantomJS ... and in the future, perhaps a course ...
If you want you can find me on facebook, twitter, github ... post there when everything is online.

I have had some success with using Protractor and Karma with riotjs. Granted we used RiotTS for the project, but the principles remain the same.
Although Karma and Protractor are typically used for commonly used testing angular applications they are agnostic.
There is tons of information out there, and is widely supported.
From the source I can see you are probably doing something asynchronous, (data-url="./data.json") which will mean you need to raise a flag in your app that the data is loaded or page is ready.
You can always introspect riot by doing document.querySelector('imageoutput')._tag to the investigate the state of your riot tags.

Related

Find download URL from datatables "CSV" button?

This R Shiny application appears to use DT to display its tables. At least in the source code I see:
<script src="plotly-binding-4.10.0/plotly.js"></script>
<link href="datatables-css-0.0.0/datatables-crosstalk.css" rel="stylesheet" />
<script src="datatables-binding-0.20/datatables.js"></script>
<link href="crosstalk-1.2.0/css/crosstalk.min.css" rel="stylesheet" />
<script src="crosstalk-1.2.0/js/crosstalk.min.js"></script>
It also has a "CSV" button to download the data:
How do I download the data from this website myself without clicking? I suppose the button runs some javascript, which makes a network call, but the "network" tab of the chrome debugger doesn't show any activity.
Ideally I could find a URL to the data, and then I could use the language of my choice (e.g., wget, curl, python, ..).
Looks like the raw data are coming from here via the project github. Seems like git pull could do it for you pretty easily.
https://github.com/Metropolitan-Council/covid-poops/blob/main/R/d_covid_cases.R
https://static.usafacts.org/public/data/covid-19/covid_confirmed_usafacts.csv?_ga=2.86006619.233414847.1642517751-2016304881.1642174657
And the other data are in this repo.
https://github.com/Metropolitan-Council/covid-poops/tree/main/data
I was able to use the python requests library to pull the raw data.
import requests
x = requests.get('https://static.usafacts.org/public/data/covid-19/covid_confirmed_usafacts.csv?_ga=2.86006619.233414847.1642517751-2016304881.1642174657')
print(x.text)
Edit: It looks like the shiny data are coming from here. I would just grab them via git. The github readme states, "The Shiny app is located in ./metc-wastewater-covid-monitor. /data contains relevant CSV data and /www contains CSS, HTML, and relevant font files the app needs upon running."
https://github.com/Metropolitan-Council/covid-poops/tree/main/metc-wastewater-covid-monitor/data
You can write a script to use a headerless browser to navigate to the page and download the file. Selenium is the usual first choice for this kind of work.

Ember: Application.hbs not generating in body while building

I have a problem with ember-cli build option.
While running server by ember s it's showing normal page with content, styles etc.
But now I want to build this app and put it on my website by ftp so i tried ember build which build my project into /disk folder but the index.html file doesn't contain the stuff from application.hbs + no styles from styles/app.css.
I'm new to ember. What am I doing wrong? Docs of ember are saying nothing about this.
All of your app is actually pulled in through external assets.
So, looking at your pre-built index.html, you'll see something like this:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>emberclear</title>
{{content-for "head"}}
<link rel="stylesheet" href="{{rootURL}}assets/vendor.css">
<link rel="stylesheet" href="{{rootURL}}assets/emberclear.css">
{{content-for "head-footer"}}
</head>
<body class='has-navbar-fixed-top'>
{{content-for "body"}}
<script src="{{rootURL}}assets/vendor.js"></script>
<script src="{{rootURL}}assets/emberclear.js"></script>
{{content-for "body-footer"}}
</body>
</html>
my application is https://emberclear.io, named emberclear, so substitute your app name where applicable.
In the head, we see two link tags.
the first link is for all the styles that your addons may include (maybe such as material-ui, or bootstrap, or bulma).
The second link is your actual app styles. for me, emberclear.css includes everything from app.css, and all of its dependencies (I'm actually using scss, so I can include stuff via scss' #import).
Down in the body we see two script tags.
vendor.js will contain ember itself, and any addon dependencies that need to be included at run time, such as ember-paper's library of components.
emberclear.js includes your app -- routes, templates, etc.
This technique is common for all single page apps, and isn't exclusive to ember. anything built with react, or vue, has a similar pattern.
If you're wanting to have html and css be a part of your index.html, fastboot (https://www.ember-fastboot.com/) + prember (pre-rendered ember: https://github.com/ef4/prember ) may be of interest to you.
Hope this helps! :)
If something is wrong, feel free to copy your built index.html from dist (and maybe additional files as well).
Some follow up questions for you, depending on the issues you are running in to:
Are you getting any errors?
What happens when you try to open the dist/index.html file locally?
You're uploading the contents of dist to an ftp folder. This in-of-itself is fine, but has the web-sever been told to use that ftp folder for a website?
How are you attempting to access the ftp folder via browser?
Maybe there is a domain/path we could look at to see additional details?

Using polymer-dart with html generated server-side by Django

The dart-polymer transformer assumes that your html are static assets. But I want my html to be dynamically generated server-side. The reason for this is that I want to build a multi-page web-app (or perhaps I should call it a multi-app web-site), and use server-side templating to keep the page structure between pages.
Is there a way to use dart-polymer without using the "compiled" html produced by the polymer transformer? Ideally I want to serve a page like this from the server:
<!DOCTYPE html>
<html>
<head>
<script src="packages/browser/dart.js"></script>
<script type="application/dart"
src="packages/web_components/webcomponents.dart"></script>
<title>Films</title>
<link rel="stylesheet" href="style.css"/>
<link rel="import" href="player/film_player.html"/>
<link rel="import" href="filmlist/film_list.html"/>
</head>
<body>
<film-player id="player"></film-player>
<film-list href="/api/movies"></film-list>
<script type="application/dart" src="main.dart"></script>
</body>
</html>
I know it is not supported having dart.js at the top, but it would be nice if dart.js did as webcompontents.dart.js need to run before the html import tags. At least I guess it does.
I really would like to avoid all the javascript and css inlining done by polymer transformer.
Polymer.dart doesn't support that scenario.
I'm not sure I understand your multi-page attempt. Dart is much better used for single-page application where you dynamically change what is shown at the current page. If you navigate to other pages a whole new Dart application is loaded and you don't have access to variables of the previous page and it is slow because Dart has some overhead and that only pays off if you stick to the one page.
A typical Dart application is built so that the client is basically an entire application that communicates with one or more servers but only sends and receives data but not application logic or views (except for very specific use cases).
Dart supports lazy loading to not load the entire application at once but not yet for Polymer.

Javascript not working? Zurb Foundation accordion issue

So im using zurb foundation framework and something is really weird. On my local server, everything is working fine, however, when I upload the files to my online test server, the accordion drop downs will not work (under courses). Also, my 's for header do not seem to be loading in the html. The main thing is the accordions, as well as if you load it on mobile phone, the menu drop down will not work. Is this a javascript/jquery issue or is there something else going on?
the site can be viewed at http://www.new.omegadesignla.com which is where I'm hosting for testing.
Either load each plugin individually, or include foundation.min.js, which automatically loads the Foundation Core and all JavaScript plugins.
<script src="/js/foundation.min.js"></script>
<!-- or individually -->
<script src="/js/foundation.js"></script>
<script src="/js/foundation.alert.js"></script>
<!-- ... -->
<script src="/js/foundation.dropdown.js"></script>
<script src="/js/foundation.tab.js"></script>

Django and Openx?

Somebody know how use OpenX (php app) with Django? I need to use OpenX or a similar software for displaying ads.
As Tomsky answered you don't need any special software just to display ads - you can just use javascript.
However, if you want to access the server and manipulate the OpenX objects such as campaigns, banners, advertisers, etc, you will need some kind of remote API. For that OpenX Source provides a XML-RPC API but I also developed a REST API:
http://www.openxrest.com
You can implement Openx using javascript, so as long as you run Openx on a php server, that should be easy.
Header, something like this:
<script type='text/javascript' src='http://something.here/delivery/spcjs.php?id=1&block=1'></script>
And then, something like this where you want to put you ad.
<script type='text/javascript'>
OA_show(1);
</script>
<noscript>
<a target='_blank' href='http://something.here/delivery/ck.php?n=112bda3'>
<img border='0' alt='' src='http://something.here/delivery/avw.php?zoneid=1&n=112bda3' /></a>
</noscript>
OpenX generates all this code for you.
Here's a project that gives you API integration. If you only want to serve ads, you don't need it though, you just have to paste the javascript provided by OpenX.