#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1);
const double eps = 1e-9;
const int inf = 2000000000;
const long long infLL = 9000000000000000000;
int dx8[] = {0, 0, 1, 1, 1, -1, -1, -1};
int dy8[] = {1, -1, 1, -1, 0, 0, -1, 1};
int dx4[] = {0, 1, -1, 0};
int dy4[] = {1, 0, 0, -1};
int main() {
  long long t;
  cin >> t;
  while (t--) {
    long long n, m, good = 0, bad = 0;
    cin >> n >> m;
    char a[n + 10][m + 10];
    for (long long i = 0; i < n; i++) {
      for (long long j = 0; j < m; j++) {
        cin >> a[i][j];
        if (a[i][j] == 'G') good++;
        if (a[i][j] == 'B') bad++;
      }
    }
    if (good == 0)
      cout << "Yes" << '\n';
    else {
      for (long long i = 0; i < n; i++) {
        for (long long j = 0; j < m; j++) {
          if (a[i][j] == 'B') {
            for (long long k = 0; k < 4; k++) {
              long long x = i + dx4[k];
              long long y = j + dy4[k];
              if (x >= 0 && x <= n - 1 && y >= 0 && y <= m - 1 &&
                  a[x][y] == '.') {
                a[x][y] = '#';
              }
            }
          }
        }
      }
      if (a[n - 1][m - 1] == '#')
        cout << "No" << '\n';
      else {
        queue<pair<long long, long long>> q;
        bool vis[n + 10][m + 10];
        memset(vis, false, sizeof(vis));
        q.push({n - 1, m - 1});
        vis[n - 1][m - 1] = true;
        while (!q.empty()) {
          pair<long long, long long> p = q.front();
          long long xx = p.first;
          long long yy = p.second;
          q.pop();
          for (long long k = 0; k < 4; k++) {
            long long xxx = dx4[k] + xx;
            long long yyy = dy4[k] + yy;
            if (xxx >= 0 && xxx <= n - 1 && yyy >= 0 && yyy <= m - 1 &&
                !vis[xxx][yyy] && a[xxx][yyy] != '#') {
              q.push({xxx, yyy});
              vis[xxx][yyy] = true;
            }
          }
        }
        long long mark = 0;
        for (long long i = 0; i < n; i++) {
          for (long long j = 0; j < m; j++) {
            if (a[i][j] == 'G' && !vis[i][j]) {
              mark = 1;
              break;
            } else if (a[i][j] == 'B' && vis[i][j]) {
              mark = 1;
              break;
            }
          }
          if (mark) break;
        }
        if (mark)
          cout << "No" << '\n';
        else
          cout << "Yes" << '\n';
      }
    }
  }
  return 0;
}
