Alternatives to

(Corey Snipes) #41

@LimeBlast - ah, well that’s a lousy start! Thank you for pointing that out. I’m sure I’ve changed something in the authentication flow that mucked it up. I will have a look. (Which reminds me, it’s probably time to add some semi-automated testing…)

(Andy Wootton) #42

Hi @corey. I appreciate your openness that you have a product to sell and that you don’t live in the UK Midland area. Maybe you’ll bring your start-up over and join our community :slight_smile: We’ve said before that being ‘a Brummie’ is a state of mind. Being open and friendly towards us strangers is a good start

I write things down to get my ideas straight. Once I’ve done it, why not share? It sometimes causes conversations. Meetup’s “groups you may like” regularly annoys me, so I understand that decision but some of our local groups are outgrowing their venues, so issue free tickets to control capacity. I’d offer links to a choice of existing ticket vendors. People have personal preferences. The ticket sellers may be willing to link back and feed you data. You could try to establish some open standards. It’s a good way of looking bigger.

Birmingham has plenty of small free rooms but venues expect payment as audiences grow because they assume entrance money is being changed. Most of our meetings are free, or the price of a drink.

(Corey Snipes) #43

Thanks for the welcome, @Woo. I see what you mean about tickets. One of the features that’s coming up pretty soon in the roadmap is event limits / waitlists, which I suppose is another way of managing capacity. It’s not the same, especially if you are charging a nominal fee for the events. Good suggestion linking to ticketing options. I have heard good things about

I’m a big fan of open data standards. I have a simple API in mind, but there are quite a few priorities ahead of it. I haven’t looked deeply but if I recall correctly, Lanyrd did some work on a data standard for events.

What is the tech scene like in Birmingham? I’m not familiar with the regional differences out there, though I probably should be as my family (Snipes) hails from England originally, in the 1600s.

Here in the states we have the big Silicon Valley powerhouse which most people hear about, and then Boulder Colorado is another big area for startups and techy stuff. Denver is much larger and nearby, so we see a lot of that too but without the Boulder notoriety. Austin is a big one, too.

Nationally, there’s an assumption here that if you’re not in one of the big hubs, you’re doing something wrong. That attitude has been changing over the last couple of years and a lot of the middle-America cities are developing robust startup/tech ecosystems with available funding, incubators, and a good community of people who care and push things forward. Many of those are pretty recent developments, but there’s a lot of exciting stuff coming out of those areas.

In fact, my family and I are moving later this year to Cleveland, which has a long industrial history and more recently an active and vibrant tech community. Like Detroit, it has a reputation of industrial decline, but there’s a ton of excellent food, arts, and culture to be had. There’s a real rebirth happening in those areas, and it’s generally a lot less expensive than comparable cities elsewhere in the US. (Plus, my wife and I are reasonably established with remote work so job is not a factor for us.) From what I can tell, Birmingham has a long industrial history, too. Is it a similar story there?

(Andy Wootton) #44

Birmingham was a major centre of small scale manufacturing and suffered at the end of steam and the decline in the UK motor industry. It hit a low in the 1970s and 80s and has been building ever since. Things really accelerated from about the turn of the century.

The area to the North West, ‘The Black Country’, had more heavy industry and hasn’t seen as much improvement yet. Our biggest growth area seems to be education and startups. I read this morning that there are 18 universities within an hour’s drive of Birmingham.

The UK government has put some money into promoting ‘The Northern Powerhouse’, around Manchester and ‘The Midland Engine’, around Birmingham, to try to reduce inequality of opportunity and to reduce the price of London housing. We are seeing a steady flow in our direction.

(Corey Snipes) #45

Ah, fascinating. That’s good to hear. Interesting you described it as reducing the inequality of opportunity. It reminds me of one of my favorite sayings: “Capability is evenly distributed by zip code (er, postal code) but opportunity is not.” All right, back to work for me…

(Jon) #46

It’s saved my bacon more times than I’ve had bacon! :pig2: I use PhantomJS on CircleCI with a PHP driver, and it’s been rock solid. In non-trivial applications there are just too many things that can accidentally break (apparently) unrelated functionality, and you don’t want to find that out after you’ve deployed a new version.

(Andy Wootton) #47

About this bacon you appear to be stockpiling, @halfer

(Corey Snipes) #48

@halfer - thank you for this excellent tip! I have been half-looking for a tool to deal with ajax-heavy UIs and PhantomJS looks like exactly what I need. I have some familiarity with Hudson/Jenkins CI and java unit testing but hadn’t taken the plunge in figuring out a solution for the front end at all. It’s been a nagging gap for me.

If you don’t mind sharing, I’m curious how you chain a test suite (multiple test files) together. Is that handled in your CI, PHP driver, or your test code itself? Startup/teardown of phantom takes enough time that I don’t really want to execute it for every test if I don’t have to. I have a basic JS file in place which seems capable of running multiple tests, but I didn’t find much discussion of that online, so I thought I might be taking the wrong approach. I could see myself ending up with 50+ test files in short order.

(Jon) #49

No problem @corey.

The basics of automated testing is to have unit and component tests that are very fast to run. This applies these days as much to the front end, where a well-written Angular/React/Vue app can be unit/component tested without firing up the app in a real browser. Thus big sets of browser tests (that take hours to run) are somewhat out of vogue these days.

Nevertheless, that’s the ideal, and if you have a code-base that does not have unit tests, or is not very unit-testable, a heavier suite of tests from a user perspective is, in my view, OK. If you make sure all your UI tests can be run separately, then you can simply add some parallelisation to them when they take too long to run (throwing CPU at the problem is much cheaper than refactoring tests that must run in a specific order).

So, that brings me onto this question. It’s OK to start up Phantom/Selenium/whatever at the start and end, but make sure your tests can run individually, or in reverse order, or whatever - it will save you a lot of bother down the road.

How to run the tests depends on the architecture of your application. My current project is a micro-services system based on Docker. Thus, testing locally or on CircleCI is merely a question of starting up Docker Compose and then exec-ing the tests inside a specially-built container. The great thing about micro-services is that it’s pretty easy to set up the database for each test, since it’s usually just an HTTP API request to make to another container.

If you use Java, your default choice is a Selenium Server, which I expect is easy to set up. However PhantomJS is pretty good in my experience (I have found it more reliable with AJAX waits, but your experience may vary), and there is bound to be a Phantom driver for Java.

Then for each test, fill in your UI elements and click on things in your UI before making assertions. I’ve found it handy to build up a library of “application state builders” so the business of creating a new test is simplified over trying to remember (or look up) each form element name.

(Jon) #50

Sadly it’s all gone! :heart_eyes_cat:

(Corey Snipes) #51

All right @halfer - that’s what I was missing. I was asking the wrong question, and that explains why I wasn’t finding many answers. :grin: Thanks for taking the time to explain it!

(Jon) #52

No worries @corey. I should say my frontend tests are non-existent, since my SPA is stuck in jQuery-land. However Phantom is pretty quick. I do around ~90 page loads, 356 assertions, lots of real SSH, FTP and SMTP ops, and it takes just 5-6 minutes to run. I run this twice a day, plus on every repo push, and this gives me immediate-enough feedback that I’ve not broken anything.

The great thing about getting your app to run inside a CI system is that it operates very quickly, making the suite run faster. If you use any CDNs for your assets, turn them off in this environment.