kubectl wait --for=condition=complete --timeout=30s

This totally looks like you are running kubectl wait --for=condition=complete on a Pod as described in your output rather than a Job.

A pod doesn't have the --for=condition=complete option. Exactly, what I get when I run it on a pod:

$ kubectl wait --for=condition=complete pod/mypod-xxxxxxxxxx-xxxxx
error: .status.conditions accessor error: Failure is of the type string, expected map[string]interface{}

As outlined by Rico you can't wait for the complete state on the pod, assuming you want to wait for the job to complete use the following

kubectl wait --for=condition=complete --timeout=30s -n d1 job/test-job1

To wait until your pod is running, check for "condition=ready". In addition, prefer to filter by label, rather than specifying pod id. For example:

$ kubectl wait --for=condition=ready pod -l app=netshoot 
pod/netshoot-58785d5fc7-xt6fg condition met

Another option is rollout status - To wait until the deployment is done:

$ kubectl rollout status deployment netshoot
deployment "netshoot" successfully rolled out

Both options works great in automation scripts, when it is required to wait for an app to be installed. However, as @CallMeLaNN noted for the second option, deployment "rolled out" is not necessarily without errors.